Recursividad
Publicado por Luis (6 intervenciones) el 20/01/2009 12:42:46
Buenas mi problema es que tengo un código con recursividad y me piden que sea mas iterativo, es decir, que no entre tantas veces en al recursividad. Aqui os dejo el código espero que me ayudeis.
{Entra como parametros el número o valor de X y un contador por variable para llevar
las cuentas de cuantas veces se ejecuta. }
Function Funcion(Numero : word; var Contador : integer) : word;
Begin
Contador := Contador + 1; //Cuantas veces se repite la recursividad.
if (Numero = 1) then
begin
Funcion := 1;
end //FIn if
else if (Numero = 2) then
Begin
Funcion := 1;
end //FIn else if
else
Begin
Funcion := Funcion(Numero - Funcion(Numero - 1,Contador),Contador) + Funcion(Numero - Funcion(Numero - 2,Contador),Contador);
end;//Fin else
End;
El objetivo es que no entre tantas veces como lo hace para un numero elevado para asi reducir el tiempo, que tb se calcula, que tarda en hacerla. Muchas gracias.
{Entra como parametros el número o valor de X y un contador por variable para llevar
las cuentas de cuantas veces se ejecuta. }
Function Funcion(Numero : word; var Contador : integer) : word;
Begin
Contador := Contador + 1; //Cuantas veces se repite la recursividad.
if (Numero = 1) then
begin
Funcion := 1;
end //FIn if
else if (Numero = 2) then
Begin
Funcion := 1;
end //FIn else if
else
Begin
Funcion := Funcion(Numero - Funcion(Numero - 1,Contador),Contador) + Funcion(Numero - Funcion(Numero - 2,Contador),Contador);
end;//Fin else
End;
El objetivo es que no entre tantas veces como lo hace para un numero elevado para asi reducir el tiempo, que tb se calcula, que tarda en hacerla. Muchas gracias.