elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Fibonacci - Dynamic Programming.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fibonacci - Dynamic Programming.  (Leído 1,838 veces)
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Fibonacci - Dynamic Programming.
« en: 21 Febrero 2017, 19:27 pm »

Quiero escribir esto:

Código
  1. int fib (int n){
  2.        if (n <= 1)
  3.                return n;
  4.        return fib(n-1) + fib(n-2);
  5. }
  6.  

En programación dinámica es decir sin que se recalculen tantas veces los mismos resultados y usando TOP-DOWN.

Intenté esto:
Código
  1. #define MAX 1000
  2. char mem[MAX];
  3.  
  4. void start(){
  5.        int i;
  6.        for (i=0; i<MAX; i++)
  7.                mem[i] = -1;
  8. }
  9.  
  10. int td (int n){
  11.  
  12.        // Si es igual a -1 significa que todavía no lo resolvimos.
  13.        if (mem[n] == -1){
  14.  
  15.                if (n <= 1)
  16.                        mem[n] = n;
  17.                else
  18.                        mem[n] = td(n-1) + td(n-2);
  19.        }
  20.  
  21.        return mem[n];
  22. }
  23.  

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.


En línea

LET'S DO STUFF!!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Fibonacci - Dynamic Programming.
« Respuesta #1 en: 21 Febrero 2017, 21:13 pm »

Pusiste la matriz como char:
Código
  1. char mem[MAX];

Un char va de -128 a 127, así que da overflows.

Querrías ponerla como int:
Código
  1. int mem[MAX];


En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: Fibonacci - Dynamic Programming.
« Respuesta #2 en: 22 Febrero 2017, 02:25 am »

Estaba distraído mientras lo programaba, cómo se me pasó eso?, hubiera estado horas buscando el problema en otra parte.

Gracias.
En línea

LET'S DO STUFF!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
win32 api programming
Programación Visual Basic
ntaryl 4 2,818 Último mensaje 5 Marzo 2009, 01:42 am
por Epinefrina
duda con cuenta Dynamic DNS
Redes
6cientos 4 3,614 Último mensaje 1 Julio 2011, 22:09 pm
por 6cientos
Dynamic Splash Screen
.NET (C#, VB.NET, ASP)
CH4ØZ 5 3,861 Último mensaje 4 Octubre 2011, 22:11 pm
por Keyen Night
Unpacking Malware, Dynamic Forking
Ingeniería Inversa
Иōҳ 5 4,285 Último mensaje 6 Julio 2012, 22:44 pm
por Иōҳ
C programming + GTK: Add two numbers.
Programación C/C++
GisiNA 7 5,410 Último mensaje 22 Junio 2013, 14:46 pm
por GisiNA
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines