Categorías: Tutoriales

Recursividad con Fibonacci – Curso Octave

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
Manuel Ignacio López Quintero

Doctor en Ingeniería Informática especializado en Sistemas Inteligentes y Visión Artificial. Profesor y coadministrador de Linux Hispano. Para más información o para contactar con él visita su página oficial: Manuel Ignacio López Quintero.

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.

Entradas recientes

EOF

19 horas hace

CERN

1 semana hace

Agua

2 semanas hace

Aire acondicionado

3 semanas hace

Eclipse

4 semanas hace

Monitoriza tu consumo de Claude Code en GNOME con Python y AppIndicator

Si trabajas a diario con Claude Code, seguramente te haya pasado: estás a mitad de…

1 mes hace