Pensando eficiencia de Fibonacci de cálculo de número desencadenó Sobre

número de Fibonacci Fibonacci de algoritmo de secuencia como sigue:

int FibonacciFunc(int val)
{
	if(0 == val)
		return 0;
	else if(1 == val)
		return 1;
	
	return FibonacciFunc(val - 1) + FibonacciFunc(val - 2);
}

 El algoritmo no es complicado, es una recursión. Pero sí las llamadas de forma recursiva estado, lo que implicaría la construcción de pilas y pilas de ventas, el costo es grande, especialmente cuando la necesidad de llamar constantemente este cálculo recursivo que hacer cuando se utiliza el consumo de recursos, el tiempo, no se tendrá en cuenta . De repente veo este problema, empezar a pensar acerca de cómo reducir esta sobrecarga. Por supuesto, esta forma de pensar no tiene nada que ver con el programa de Fibonacci Número pensó que la matriz oculta. Consideramos que la probabilidad de un problema. trato general con la situación real, habrá una gran cantidad de datos se duplican, habrá cierta probabilidad de ocurrencia, partimos de ese punto.

1, los recursos más bajos y más se pueden implementar lo suficientemente premisa:

      La lista es la mejor opción

typedef struct _FIBONACCI_VAL_MAP
{
	int item ;      //项
	int val;        //值
	struct _FIBONACCI_VAL_MAP *next;
}FIBONACCI_VAL_MAP;

Antes de cada cálculo, averiguar si existe un dato lista de resultados. Si usted no golpea sobre los datos calculados, y se inserta al principio de la lista.

Espere hasta que el programa se ejecuta el tiempo suficiente, entonces el valor de situación casi real se puede encontrar en la lista. En esta actuación aparecerá cuello de botella en la búsqueda en la lista. Por ejemplo, un árbol de encontrar? optimizar aún más que? Si el árbol está optimizado búsqueda en la lista de búsqueda después de la verificación. La recursividad se consume que antes de la construcción de la pila pines pila, lista de búsqueda se consume más en los valores de registro asignados. Esto es a la vez tiempo de un orden de magnitud

 

2, un menor número de recursos:

   Sería una gran variedad de matriz de tamaño fijo,

typedef struct _FIBONACCI_VAL_MAP
{
	int item ;
	int val;
}FIBONACCI_VAL_MAP;

FIBONACCI_VAL_MAP Target_Map[10];

Encuentra una lista de programas para encontrar como antes, con el primer golpe de los miembros de la bolsa. Añadir perderse la primera, antes de que los datos después del cambio, automáticamente descartar la última (la más baja probabilidad de éxito).

3, otro programa de optimización también no esperaba. guante vacío predecesores White Wolf. .jpg divertida Manual

Publicado 22 artículos originales · ganado elogios 9 · vistas 8830

Supongo que te gusta

Origin blog.csdn.net/ljm_c_bok/article/details/82981100
Recomendado
Clasificación