Considere la siguiente función escrita en el lenguaje de programación C.
La salida de la función anterior en la entrada «ABCD EFGH» es
void foo (char *a) { if (*a && *a != ` `) { foo(a+1); putchar(*a); } }
(A) ABCD EFGH
(B) ABCD
(C) HGFE DCBA
(D) DCBA
Respuesta: (D)
Explicación: El programa imprime todos los caracteres antes de ‘ ‘ o ‘\0’ (lo que ocurra primero) en orden inverso.
Supongamos que la dirección base de la array dada es 1000. Se puede representar como se muestra a continuación en la imagen
A continuación se muestra la pila de recursión completa del código dado
Después de llamar a foo(1004), la recursividad regresará como el carácter en 1004 es ‘ ‘. foo(1004) volverá a su llamador, que es foo(1003) y se ejecutará la siguiente línea en foo(1003), que imprimirá el carácter en 1003 (‘D’). foo(1003) luego volverá a foo(1002) y se imprimirá el carácter en 1002 (‘C’) y el proceso continuará hasta foo(1000).
Esta solución es aportada por .
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA