PDA

Ver la versión completa : Calculo de limite de precision en fibonacci



Polimeron
21-09-2006, 21:51
Buenas,
Mi duda es la siguiente: en caso de que queramos calcular la serie de Fibonacci de un numero elevado ya sea con el algoritmo tradicional como con el de la programacion dinamica, como podemos ver cual es el numero mas grande que puede calcular nuestro ordenador (saber cuantas cifras tiene ese numero)? La indicacion para calcularlo es que por ser declarado el numero de tipo unsigned long int, es una precision finita con su defecto de que no se calcula un numero de fibonacci con F(n) sino F(n) mod p donde p es el siguiente entero. A ver si a alguien se le ocurre una idea que no sea ir calculando numeros hasta ver una concatenacion. Gracias por adelantado.

Marchi
07-10-2006, 08:59
Por mas que una computadora trabaja con tipos de datos finitos, sean 32 64 128 o la cantidad de bits que se quiera, siempre es posible diseñar un algoritmo de calculo para numeros mayores al maximo permitido para el tipo de dato dado.

Por lo que con el tiempo suficiente no hay restriccion para el tamaño maximo del numero que se presume calcular.


Chau saludos

Polimeron
07-10-2006, 09:35
Gracias por la respuesta y lo que dices es cierto. Se puede crear una clase en c++ (por ejemplo) para manejar una precision infinita. Ahora bien, suponiendo que no tenemos esa clase y tenemos datos finitos, cual seria el numero de fibonacci mas grande que se puede calcular en un ordenador determinado. La solucion era la menos elegante y la mas simple :ir calculando los sucesivos numeros y comparandolos (el actual con el anterior) y en caso de que el actual sea menor, se ha sobrepasado el limite en nuestro ordenador y en lugar de calcularse f(n), se calculo f(n) mod ULONG_MAX. Dato interesante es que en ordenadores de 32 bits, el numero mas grande es aproximadamente el f(47) y para uno de 64 bits es f(94).

Gracias de nuevo y saludos