Baner principal del sitio
Código fuente
Programa recursivo para calcular los números de la serie de Fibonacci en C++
Incluye el código fuente
Publicado por JL Fecha: 2007-07-22 20:10:03 Idioma: Español Tipo de documento: Código fuente

Sucesión de Fibonacci Por medio de un algoritmo con recursión

Programa fuente en C++

Programa fuente en lenguaje C que calcula la famosa sucesión de Fibonacci por medio de una funciónque realiza llamadas sucesivas a si misma (Recursividad). El programa muestra las sumas que se van realizando en cada etapa.


En matemáticas, la secuencia de Fibonacci es una sucesión de números enteros que fue descrita por primera vez en Europa por Leonardo de Pisa, también conocido como Fibonacci.

La seríe comienza con 1,1 aunque en algunas implementaciones se puede agregar un cero al inicio iniciandola con 0,1 y el siguiente número consiste en la suma de los dos anteriores (Ej. 1,1,2,3,5,8,13,21, ...)

El programa utiliza una función llamada FibonacciRecursivo() que recibe como parámetro el número de elementos de la serie que van a ser calculados.

Para el manejo de los valores se utilizaron variables de tipo long las cuales pueden ser facilmente rebasadas en cuanto a su capacidad con series muy largas, por ejemplo, si se le pide calcular 50 elementos o más. Esto no está validado ya que no era necesario para los fines académicos que el algoritmo busca.

#include <iostream.h>
#include <stdio.h>
#include <conio.h>

/* Programa para calcular la serie del
fibonacci en forma recursiva */

int FibonacciRecursivo(int Num) {
   int valor;
   if (Num==0 || Num==1) {
      return (Num);
   }else {
      valor=FibonacciRecursivo(Num-1) + FibonacciRecursivo(Num - 2);
      textcolor(4);
      printf("F(%d)= F(%d)+F(%d) = %d\n\r",Num,Num-1,Num-2,valor);
      return (valor);
   }
}

void main()
{
 int Numero;
 int Fib;

 clrscr();
 printf("\n\n*** PROGRAMA PARA CALCULAR E IMPRIMIR LA SERIE DEL FIBONACCI *** \n\n ");
 printf("Cuantos d¡gitos deseas calcular: ");
 cin >> Numero;

 FibonacciRecursivo(Numero);

 printf("\n\n\rPresiona una tecla...");
 getch();
}

La Serie del Fibonacci también se puede calcular sin recursividad por medio del empleo de ciclos. Lo puedes ver Aquí


A continuación un listado de los primeros 50 elementos de la serie:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, ...


También puedes ver el diagrama de flujo del algoritmo Aquí




Hay 11 comentarios sobre este tema por parte de los lectores


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =

Los últimos 5 comentarios colocados son:

1. Comentario de Javier el 2011-03-16 20:17:01
#include<stdio.h>
#include<conio.h>

int factorial(int num);
int potencia(int base, int exponente);
int fibonacci(int num);


main()
{

int op, numero,ex,i,valor;
do
{
printf(\"Menun\");
printf(\"1.-Factorialn2.-Potencian3.-Fibonaccin\");
printf(\"nElija una opcion: \");
scanf(\"%d\",&op);
clrscr();
switch(op)
{
case 1: printf(\"FACTORIALn\");
printf(\"Numero: \");
scanf(\"%d\",&numero);
printf(\" =%d\",factorial(numero));
getche();
break;
case 2: printf(\"POTENCIAn\");
printf(\"Numero: \");
scanf(\"%d\",&numero);
printf(\"nPotencia:\");
scanf(\"%d\",&ex);
printf(\"nResultado = %d\",potencia(numero,ex));


getche();
break;
case 3: printf(\"FIBONACCIn\");
printf(\"Numero: \");
scanf(\"%d\",&numero);
for(i=0;i<numero;i++)
{
valor=fibonacci(i);
printf(\"%dn\",valor);
}
getche();
break;

}
clrscr();
}while(op==1||op==2||op==3);
}


int factorial(int num)
{
int res;
if(num<2)
{res=1;
printf(\"1\");}
else
{
printf(\"%d*\",num);
res=num * factorial(num-1);
return res;
}
}



int potencia(int base, int exponente)
{

if(exponente==0)
return 1;
else
return base*potencia(base,exponente-1);
}



int fibonacci(int num)
{

if(num==0 || num==1)

return num;
else
return fibonacci(num-1)+fibonacci(num-2);

}

//Ahi esta resuelto 3 ejemplos de recursividad





2. Comentario de Jose Antonio el 2010-07-13 22:00:43
hetratado de adaptar este código a MVC++2008 y se ejecuta, pero los resultados son solo parecidos a los de la serie fibonacci, dándose repetición de parte de la serie dentro de la serie... No se si soy yo que no he adaptado bien el código, pero es que si añadimos la dificultad que me supone el concepto de recursividad... Les agraqdecería que me echaran una mano.

3. Comentario de li el 2010-04-07 00:57:45
kiero que me muetren la serie fibonacci por recursividad desde 1er termino hasta el numero ingresado ...! porfavor los codigos en javadeveloper

4. Comentario de karlos el 2010-03-24 09:57:02
son la banda me salvaron jejeje

5. Comentario de José Claudio el 2009-10-18 12:08:03
Esta bueno pero serian tan amable de mandarme un pdf con instrucciones de como utilizar recurcividad por valor y referencia


VER TODOS LOS MENSAJES (11)...


Artículos relacionados:
Código fuente Otra implementación de la serie del fibonacci en C++ Código fuente Programa en C++ para calcular e imprimir la serie de Fibonacci