Uno de los ejercicios típicos que se plantean a la hora de aprender a
programar en cualquier lenguaje es realizar un algoritmo que muestre la
sucesión de Fibonacci (o serie de Fibonacci).
Foto tomada de freedigitalphotos.net |
La sucesión de Fibonacci es una sucesión infinita de números en los que
cada uno de ellos es el resultado de la suma de sus dos inmediatamente
anteriores. La sucesión comienza tal que así:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987...
Por definición matemática la sucesión de Fibonacci es una sucesión
recurrente, es decir, se necesita que se calculen términos anteriores bajo la
misma definición para poder calcular uno de sus números. Es por esto por lo que
la implantación de la serie en cualquier lenguaje de programación se podría
considerar un clásico en los temas de bucles y recursividad.
Como parte práctica del curso básico de C y como complemento al último ejercicio planteado en la serie de 25 ejercicios sobre estructuras iterativas, voy a facilitar el código de dos
programas que muestran los primeros 20 dígitos de la sucesión de Fibonacci, el
primero será usando un bucle For y el segundo será mediante el uso de la
recursividad.
Veamos cómo sería la sucesión de Fibonacci en C utilizando bucles:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y,z,cont;
x=0;
y=1;
printf("0\n1\n",z);
for (cont=1;cont<=20;cont=cont+1)
{
z=x+y;
printf("%d\n",z);
x=y;
y=z;
}
system("PAUSE");
return 0;
}
Ahora la sucesión de Fibonacci en C utilizando funciones recursivas:
#include <stdio.h>
#include <stdlib.h>
int fibonacci(int n)
{
if (n>2)
return fibonacci(n-1) + fibonacci(n-2);
else if (n==2)
return 1;
else if (n==1)
return 1;
else if (n==0)
return 0;
}
int main(void)
{
int num;
for (num=0; num<=20; num++)
{
printf("%d\n",
fibonacci(num));
}
system("PAUSE");
return 0;
}
¿Qué otras formas conoces de calcular la sucesión de Fibonacci?