Título: ¿Por que se imprime el arreglo al revez? [C] Publicado por: UsuarioZ en 6 Enero 2020, 00:20 am Empieza a imprimir por el ultimo elemento (37).
Código
Salida: Citar Los valores en el arreglo son: 37 60 70 90 14 95 18 64 27 32 Título: Re: ¿Por que se imprime el arreglo al revez? [C] Publicado por: K-YreX en 6 Enero 2020, 03:04 am Eso es porque primero tienes la llamada recursiva y después la instrucción de mostrar.
Lo que hace tu programa es: Código: Llamar a mostrar desde la posicion 0 Lo único que tienes que hacer es cambiar el orden de las dos instrucciones haciendo que primero muestre y después se llame de nuevo. Así el esquema sería: Código: Llamar a mostrar desde la posicion 0 Al final lo importante en esto es entender cómo funciona la recursividad, más que conseguir el resultado esperado a prueba y error. Título: Re: ¿Por que se imprime el arreglo al revez? [C] Publicado por: AlbertoBSD en 6 Enero 2020, 03:05 am Por que estas llamando a una funcion recursiva prinmero y depues imprimes el numero, por eso solo empezara con el printf del ultimo elemento en la pila de llamadas a la funcion someFunction
Si cambias esto Código
Por esto Código
Ahora si imprimiera el Arreglo en Orden correcto. Saludos! Título: Re: ¿Por que se imprime el arreglo al revez? [C] Publicado por: UsuarioZ en 6 Enero 2020, 03:26 am Ahh, o sea que las instrucciones que estén antes de la llamada se ejecutan mientras se acerca al caso base y las que están después mientras se aleja?
Gracias. Título: Re: ¿Por que se imprime el arreglo al revez? [C] Publicado por: AlbertoBSD en 6 Enero 2020, 03:41 am Ahh, o sea que las instrucciones que estén antes de la llamada se ejecutan mientras se acerca al caso base y las que están después mientras se aleja? No entendi, pero mi Si tomas un cuaderno y anotas paso por paso lo que se esta haciendo. Ejemplo: Primera llamada size = 10 &b[1] = 27 someFunction(&b[1], size - 1); Segunda llamada size = 9 &b[1] = 64 someFunction(&b[1], size - 1); .... Y ya en la llamada final size = 1 &b[1] = 37 someFunction(&b[1], size - 1); Y ahora empiezan los printf: printf("%d ", b[0]); b[0] = 37 ... Etc |