Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fernaEDLP en 30 Mayo 2019, 17:09 pm



Título: duda función recursiva
Publicado por: fernaEDLP en 30 Mayo 2019, 17:09 pm
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:

Código
  1. void fun(int a);
  2.  
  3. int main()
  4. {
  5. int N;
  6. scanf("%d",&N);
  7. fun(N);
  8.  return 0;
  9. }
  10. void fun(int a)
  11. {
  12.    if(a>0)
  13.        {
  14.            printf("%d\n",a);
  15.            fun(a-1);
  16.        }
  17.        else
  18.            {
  19.                printf("fin\n");
  20.                printf("%d\n",a);
  21.                printf("fin de verdad\n");
  22.            }
  23.  
  24.  
  25.  
  26. }
  27.  
  28.  
  29.  

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:
Código
  1. void fun(int a)
  2. {
  3.    if(a>0)
  4.        {
  5.            printf("%d\n",a);
  6.            fun(a-1);
  7.        }
  8.        else
  9.            {
  10.                printf("fin\n");
  11.                printf("%d\n",a);
  12.                printf("fin de verdad\n");
  13.            }
  14.  
  15.  
  16.  
  17. }
  18.  
  19.  
  20.  
  21.  
  22.  


Título: Re: duda función recursiva
Publicado por: K-YreX en 30 Mayo 2019, 18:10 pm
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.


Título: Re: duda función recursiva
Publicado por: fernaEDLP en 30 Mayo 2019, 18:24 pm
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..


Título: Re: duda función recursiva
Publicado por: K-YreX en 30 Mayo 2019, 18:41 pm
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.
Código:
printf(6)
fun(5)
printf(5)
...
printf(1)
fun(0)
printf("fin")
printf(0)
printf("fin de verdad")


Título: Re: duda función recursiva
Publicado por: fernaEDLP en 30 Mayo 2019, 20:55 pm
perfecto gracias!!