C++ | Referencias | Pregunta 1

¿Cuál es el valor de retorno de f(p, p) si el valor de p se inicializa a 5 antes de la llamada? Tenga en cuenta que el primer parámetro se pasa por referencia, mientras que el segundo parámetro se pasa por valor.

int f(int &x, int c) {
   c  = c - 1;
   if (c == 0) return 1;
   x = x + 1;
   return f(x, c) * x;
} 

(A) 3024
(B) 6561
(C) 55440
(D) 161051

Respuesta: (B)
Explicación: dado que c se pasa por valor y x se pasa por referencia, todas las funciones tendrán la misma copia de x, pero diferentes copias de c .

f(5, 5) = f(x, 4)*x = f(x, 3)*x*x = f(x, 2)*x*x*x = f(x, 1)*x*x *x*x = 1*x*x*x*x = x^4

Dado que x se incrementa en cada llamada de función, se convierte en 9 después de la llamada f(x, 2). Entonces, el valor de la expresión x^4 se convierte en 9^4, que es 6561.

#include <stdio.h>
  
int f(int &x, int c)
{
    c  = c - 1;
    if (c == 0) return 1;
    x = x + 1;
    return f(x, c) * x;
}
int main()
{
    int p = 5;
    printf("%d", f(p, p));
}

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 *