Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La Serie Fibonacci
La Serie Fibonacci
Un poco de observacin es sufucuente para encontrar que cualquier nmero (a partir del tercero de la serie, osea el segundo 1) es igual a la suma de los dos nmeros anteriores. Daremos en primer lugar la versin iterativa. En este algoritmo deseamos encontrar el simo nmero de la serie Fibonacci. As si el resultado del algoritmo debe ser ; si el resultado debe ser . La versin iterativa empieza desde los primeros 1's, sumndolos y encontrando el tercero, luego para encontrar el cuarto nmero se suman el tercero (recin encontrado) y el segundo, y as en adelante hasta encontrar el nmero buscado.
#include <iostream> int main (int argc, char * const argv[]) { int i,n,fib,fib1,fib2,fibx; std::cout<<"Un numero entero:"; std::cin>>n; fib1=2; fib2=1; i=3; if((n==1)||(n==2)) fib=1; else{ do{ fib = fib1 + fib2; fibx = fib1; i++; fib1 = fib; fib2 = fibx; }while(i<n); } std::cout << "\nEl "<<n<<"-esimo numero de la serie Fibonacci es: "<<fib; return 0; }
En el siguiente cdigo, la solucin que propone la recursividad resulta en una programacin elegante, aunque costosa. El cdigo que hace esto es:
#include <iostream> //==================== int fib(int val){ if ((val==1)||(val==2)) return 1; else return (fib(val-1)+fib(val-2)); } //==================== int main (int argc, char * const argv[]) { int n; std::cout<<"Numero entero:"; std::cin>>n; std::cout<<"\nEl "<< n <<"-esimo numero fibonacci es: "<< fib(n); return 0; }
Como regla general, cualquier algoritmo recursivo se puede reescribir en un algoritmo iterativo. La ventaja de tener un algoritmo iterativo es que no se usa una pila para guardar llamadas a la misma funcin de manera recursiva, esto es una ventaja porque el espacio de memoria destinado al uso de la pila es generalmente limitado, de manera que cuando se hacen demasiadas funciones push seguramente llegar el momento en que la pila ``se desborde'', que por cierto es un trmino usado en computacin para decir que ya no hay ms espacio disponible en la pila. http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/node38.html