¿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