Fibonacci iterativo en C

Fibonacci en C – Iterativo y recursivo

Resumen: programar algoritmo Fibonacci en C de manera iterativa (usando un ciclo) y recursiva. También imprimir la sucesión fibonacci.

En este post vamos a trabajar con la sucesión Fibonacci para mostrar el número que iría en determinada posición de la serie; para imprimirla desde el 0 hasta un número y para hacer lo mismo usando recursividad.

Todo esto lo vamos a hacer en el lenguaje de programación C usando ciclos.

El algoritmo

Es muy simple, se comienza en 0 y 1 y después los siguientes números son la suma de los anteriores. Si queremos imprimir la sucesión, usamos printf.

Vamos a hacer funciones que devuelven el número que va en determinada posición de la sucesión. Por ejemplo, ya que la sucesión es:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765

Podemos decir que el número que va en la posición 7 es 13 (contando desde el 0)

Fibonacci iterativo en C

Veamos la primer función que devuelve el número que va en la sucesión, y que además permite imprimir la misma.

long fibonacci(long posicion, int imprimir) {
    long siguiente = 1, actual = 0, temporal = 0;
    for (long x = 1; x <= posicion; x++) {
        if (imprimir)
            printf("%ld, ", actual);
        temporal = actual;
        actual = siguiente;
        siguiente = siguiente + temporal;
    }
    if (imprimir)
        printf("%ld", actual);
    return actual;
}

Recibe la posición hasta la que queremos imprimir y un booleano para decir si la sucesión debe imprimirse o no. Devuelve el número de la sucesión fibonacci que va en la posición solicitada.

Su modo de uso es el siguiente, en el primer caso imprimimos la sucesión:

// No queremos almacenar el resultado, solo imprimir la serie
fibonacci(20, 1);
// Ahora sí queremos el resultado y no queremos imprimir
unsigned long fibonacciDe10 = fibonacci(10, 0);
printf("\nFibonacci de 10 es: %ld", fibonacciDe10);

En la línea 1 simplemente invocamos a la función y no necesitamos almacenar el resultado porque simplemente queremos imprimir la sucesión fibonacci en C.

Después, en la línea 4 y 5 almacenamos el valor y no imprimimos la serie. Al final la salida es:

Fibonacci iterativo en C
Imprimir la serie fibonacci en C y obtener el número que va en determinada posición

Ahora vamos a ver el Fibonacci recursivo en C.

Fibonacci recursivo en C

Lo siguiente es la implementación de este algoritmo pero usando recursividad o recursión. Queda así:

long fibonacciRecursivo(long posicion) {
    if (posicion < 2)
        return posicion;
    return fibonacciRecursivo(posicion - 1) + fibonacciRecursivo(posicion - 2);
}

En este caso no imprime nada, simplemente devuelve el número que va en la posición. Por ejemplo:

unsigned long fibonacciDe10 = fibonacciRecursivo(10);
printf("Fibonacci de 10 es: %ld", fibonacciDe10);

Conclusiones y notas finales

No olvides que la función devuelve el número que va en determinada posición pero comienza a contar desde el 0, así como la notación de arreglos; es decir, si quieres el número que va en la primera posición invoca al algoritmo con la posición 0.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *