La siguiente función calcula el Fibonacci, ¿por qué el último cálculo debe incluir el nombre de la función y no solo (n-1)+(n-2) ?
function fibonacci(n){ if (n===1){ return 1} else if (n===0){ return 0} else return fibonacci(n-1)+fibonacci(n-2) // (n-1)+(n-2) does not work. Why? }Sé que esta es una pregunta para principiantes, pero no pude encontrar la respuesta. Agradecería cualquier comentario. Entiendo que necesito usar recursividad, pero ese no es el punto de mi pregunta.
esta es una solución recursiva:
function fibonacci(n){ if (n===1){ return 1} else if (n===0){ return 0} else return fibonacci(n-1)+fibonacci(n-2) } Estás llamando a esta función para nth fibonacci. Pero aún no conoces el nth fibonacci. entonces debes encontrar (n-1) y (n-2) fibonacci. Es por eso que debe llamar a fibonacci(n-1)+fibonacci(n-2) . Y ni siquiera conoces n-1 y n-2 fibonacci, por eso debes llamarlo hasta que sepas fibonacci. Conoces first y second fibonacci. Eso es lo que cuando n == 1 o n==0 devuelve solo respuesta.
por ejemplo:
n = 7 fibonacci(7) = fibonacci(6) + fibonacci(5) fibonacci(6) = fibonacci(5) + fibonacci(4) fibonacci(5) = fibonacci(4) + fibonacci(3) fibonacci(4) = fibonacci(3) + fibonacci(2) fibonacci(3) = fibonacci(2) + fibonacci(1) fibonacci(2) = fibonacci(1) + fibonacci(0) fibonacci(1) = 1 fibonacci(0) = 0