La recursividad consiste en una función que se llama a sí misma y que tiene determinadas premisas:
- La primera llamada siempre es desde fuera.
- Debe tener un punto de detención, una condición que una vez cumplida finalice la recursión.
- Para que sea útil (y no solo se reinvoque sin ton ni son), algunas variables deben estar disponibles entre llamadas y otras podrían ser temporales (no sobreviven al salir de la función).
Si primero creamos una solución para la serie (fíjate que yo propongo otra solución distinta a la tuya (la que tu pones es más sencilla), solo con el propósito de que veas que a veces hay más de una solución):
Usamos Array() como contenedor de la serie, y k como el contador de iteración.
Lo primero es inicializar el primer valor de la serie:
Array(0)=1
Bucle para k desde 1 a 5
Array(k) = Array(k-1)² + Array(k-1)
imprimir Array(k)
fin bucle
Ahora para ser recursivo, lo que hace el bucle en cada ciclo, debe hacerse en cada llamada a la función, por tanto las variables que deben 'sobrevivir' entre llamadas son el valor (n) y k, de paso los metemos también en el array... fíjate que se podría ignorar 'n' como tal y operar siempre sólo con el valor dle array pasando donde convenga Array(k-1), etc...
Se hace la primera llamada:
llamar a SerieConRecursion(1,0)
funcion SerieConRecursion(n, k)
array(k)=n
n = (n² + n)
k = (k + 1)
si (k < 5) luego
llamar SerieConRecursion(n, k)
en otro caso
array(k)=n <--- esta línea solo se ejecutará una vez
fin si
fin funcion