Algoritmos | Recursividad | Pregunta 7

¿Qué hace la siguiente función?

int fun(unsigned int n)
{
    if (n == 0 || n == 1)
        return n;
  
    if (n%3 != 0)
        return 0;
  
    return fun(n/3);
}

(A) Devuelve 1 cuando n es un múltiplo de 3, de lo contrario devuelve 0
(B) Devuelve 1 cuando n es una potencia de 3, de lo contrario devuelve 0
(C) Devuelve 0 cuando n es un múltiplo de 3, de lo contrario devuelve 1
(D) Devuelve 0 cuando n es una potencia de 3, de lo contrario devuelve 1

Respuesta: (B)
Explicación: Resolvamos con el ejemplo, n = 27 qué potencia de 3.
La primera vez si la condición es falsa ya que n no es igual a 0 ni igual a 1 entonces 27%3 = 0.
Aquí, de nuevo si la condición es falsa porque es igual a 0.
Entonces fun(27/3) llamará.

La segunda vez si la condición es falsa ya que n no es ni igual a 0 ni igual a 1, entonces 9%3 = 0.
Aquí nuevamente si la condición es falsa porque es igual a 0.

Luego, fun (9/3) llamará por tercera vez si la condición es falsa ya que n no es ni igual a 0 ni igual a 1, entonces 3%3 = 0.
Aquí nuevamente si la condición es falsa porque es igual a 0.

Entonces fun(3/3) llamará aquí n==1 si la condición se cumple y devuelve n, es decir, 1.

La opción (B) es correcta.
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 *