Código
int fib (int n){
if (n <= 1)
return n;
return fib(n-1) + fib(n-2);
}
En programación dinámica es decir sin que se recalculen tantas veces los mismos resultados y usando TOP-DOWN.
Intenté esto:
Código
#define MAX 1000
char mem[MAX];
void start(){
int i;
for (i=0; i<MAX; i++)
mem[i] = -1;
}
int td (int n){
// Si es igual a -1 significa que todavía no lo resolvimos.
if (mem[n] == -1){
if (n <= 1)
mem[n] = n;
else
mem[n] = td(n-1) + td(n-2);
}
return mem[n];
}
Pero no funciona funciona en los primeros a partir del número 20 tira mal el resultado, ¿alguna pista de por qué no funciona?
Saludos.


 
  




 Autor
 Autor
		



 En línea
									En línea
								




