NOTA: este tutorial es parte del curso de Octave de Linux Hispano.
La recursividad es un concepto básico en programación y uno de los problemas clásicos que se enseñan es calcular la sucesión de Fibonacci. Recordad que la sucesión de Fibonacci es la sucesión de números donde cada número se calcula sumando los dos anteriores a él.
Os voy a proponer un pequeño ejercicio a resolver. Más adelante tenéis la solución pero en un principio me gustaría que lo intentáseis por vosotros mismos.
El ejercicio es el siguiente: Crea una función, fibonacci.m, que reciba un número entero n y que devuelva la sucesión n del número de Fibonacci.
Y ésta es la solución:
function fib = fibonacci(n) if n == 0 fib = 0; return; end if n < 0 fib = (-1)^(n+1) * fibonacci(-n); return; end alpha = (1 + sqrt(5))/2; fib = round( alpha^n / sqrt(5) ); end
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
No veo la recursividad en el código del post... si n < 0 se realiza una única llamada recursiva. Esta implementación es más eficiente, pero yo no la llamaría recursiva, de hecho alterando el orden del código y añadiendo una variable eliminarías la única llamada recursiva.
El código recursivo (muy ineficiente) para la sucesión de fibonacci para números naturales sería la siguiente:
function fib = fibonacci(n)
if n < 2
fib = n;
return;
end
fib = fibonacci(n-1) + fibonacci(n-2)
end
Gracias por tu aportación, Anónimo.
Es cierto que la implementación propuesta es más efectiva pero la tuya es más didáctica ya que hace recursividad una y otra vez hasta dar con la solución.
Espero que el usuario escoja la que más le convenga.
Y repito, gracias por tu comentario.