PUERTA | GATE-CS-2016 (Conjunto 2) | Pregunta 47

Considere el siguiente programa:

int f(int *p, int n)
{
    if (n <= 1) return 0;
    else return max(f(p+1,n-1),p[0]-p[1]);
}
int main()
{
    int a[] = {3,5,2,6,4};
    printf("%d", f(a,5));
}

Nota: max(x,y) devuelve el máximo de x e y. El valor impreso por este programa es

(A) 2
(B) 3
(C) 4
(D) 5

Respuesta: (B)
Explicación: mire la pila de recurrencia del código dado en la imagen de abajo. Suponiendo que la dirección base de la array comienza en 1000 y un número entero ocupa 4 bytes.
pranjul_16

pranjul_16_1

Después de que regrese la última llamada recursiva f(1016,1), en la llamada anterior tendremos return max(0,2) y luego return max(2,-4) y luego return max(2,3) y finalmente return máx(3,-2) = 3.

Esta solución es aportada por Pranjul Ahuja

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 *