Ayuda con algoritmo

petercompany
29 de Mayo del 2008
Buenos días...
hace poco estuve en una prueba y me colocaron el siguiente algoritmo....

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<ctype.h>
int Funcion (int) ;
void main ()
{
int Val = Funcion(6);

clrscr() ;
cout <<"\n" ;
cout <<Val ;
getch() ;

}


int Funcion (int Val)
{
if (Val == 1)
{
return 0 ;
}
else if (Val == 2 || Val == 3)
{
return 1 ;
}
return Funcion(Val -1) + Funcion (Val - 2) ;
}

la verdad no pude hacer bien la prueba de escritorio se que imprime 5 porque lo hice en c, vb, java y php... quisiera saber que es lo que hace esta recursividad o más exactamente cual es la prueba de escritorio?? pues la verdad llego a un punto y no se como realiza esta doble recursividad... de ante mano muchas gracias.. saludos desde Duitama.

petercompany
29 de Mayo del 2008
Como nadie respondió le eché cabeza con la Ayuda del Ingeniero Nelson Angarita y lo desarrollamos así:

Funcion(6)

Funcion(5) + Funcion (4)

Funcion(4) + Funcion(3) Funcion(3) + Funcion(2)

Funcion (3) + Funcion(2)









1 + 1 + 1 + 1 + 1



= 5




petercompany
29 de Mayo del 2008
F(6)

F(5) + F (4)
F(4) + F(3) + F(3) + F(2)

F (3) + F(2)

1 + 1 + 1 + 1 + 1

= 5

Bueno en este ejemplo se entiende mucho mejor... utilicé F para reemplazar Funcion por falta de espacio... pero se entiende perfectamente la prueba de escritorio.... aunque no corresponda exactamente a una prueba de escritorio clarifica nuestro algoritmo.

saludos y muchas gracias...