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.
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
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