duda función recursiva

Iniciado por fernaEDLP, 30 Mayo 2019, 17:09 PM

0 Miembros y 1 Visitante están viendo este tema.

fernaEDLP

hola gente todo tranquui?, espero que todo en orden, necesito que me digan si esta bien hecho esto:
el problema dice: realice la traza de la sguiente funcion recursiva, y diga cual es el resultado para fun(6),
el codigo es este:

void fun(int a);

int main()
{
int N;
scanf("%d",&N);
fun(N);
  return 0;
}
void fun(int a)
{
    if(a>0)
        {
            printf("%d\n",a);
            fun(a-1);
        }
        else
            {
                printf("fin\n");
                printf("%d\n",a);
                printf("fin de verdad\n");
            }



}




la salida es sencilla imprimiria esto:
6
5
4
3
2
1
Fin
0
Fin de verdad
ahora bien para realizar la traza estaria bien esto asi:

1 6
2 fun(5)
1 5
2 fun(4)
1 4
2 fun(3)
1 3
2 fun(2)
1 2
2 fun(1)
1 1
2 fun(0)
Fin
0
Fin de verdad

Aclaracion la parte que me dan en el problema es solo la funcion, todo el codigo que pegue ahi lo hice para compilarlo y verificar que imprime eso, osea el problema solo me da esta parte:
void fun(int a)
{
    if(a>0)
        {
            printf("%d\n",a);
            fun(a-1);
        }
        else
            {
                printf("fin\n");
                printf("%d\n",a);
                printf("fin de verdad\n");
            }



}





K-YreX

No sé lo que quieres representar exactamente con "la traza", pero si lo que quieres es mostrar en que orden se van haciendo las sucesivas llamadas y cuales son las salidas que se obtienen, en tal caso, es correcto.
En el fondo es como la salida en sí misma, añadiendo las sucesivas llamadas a la función.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

fernaEDLP

hola amigo! graciass, o sea si viste en general cuando te dicen realice la traza de una funcion, o sea los valores que van adquiriendo las variables etc..

K-YreX

Citar
La traza de un algoritmo (o programa) indica la secuencia de acciones (instrucciones) de su ejecución, así como, el valor de las variables del algoritmo (o programa) después de cada acción (instrucción).
Siguiendo esta definición de traza, como no hay variables sólo habría que indicar las instrucciones que se ejecutan. Yo en la traza mostraría la instrucción completa, no solo la salida por pantalla.

printf(6)
fun(5)
printf(5)
...
printf(1)
fun(0)
printf("fin")
printf(0)
printf("fin de verdad")
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

fernaEDLP