PUERTA | GATE-CS-2015 (Conjunto 2) | Pregunta 25

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

pranjul_25

A continuación se muestra la pila de recursión completa del código dado

pranjul_25_2

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *