PUERTA | Puerta TI 2007 | Pregunta 27

La función f se define como sigue:

int f (int n) {
    if (n <= 1) return 1;
    else if (n % 2  ==  0) return f(n/2);
    else return f(3n - 1);
}

Suponiendo que se pueden pasar enteros arbitrariamente grandes como parámetro a la función, considere las siguientes declaraciones.
1. La función f termina para un número finito de valores diferentes de n ≥ 1.

ii. La función f termina para infinitos valores diferentes de n ≥ 1.

iii. La función f no termina para un número finito de valores diferentes de n ≥ 1.

iv. La función f no termina para un número infinito de valores diferentes de n ≥ 1. ¿

Cuál de las siguientes opciones es verdadera de las anteriores?
(A) (i) y (iii)
(B) (i) y (iv)
(C) (ii) y (iii)
(D) (ii) y (iv)

Respuesta: (D)
Explicación:La función termina para todos los valores que tienen un factor de 2 {(2.x)2==0}
Entonces, (i) es falso y (ii) es VERDADERO.
Sea n = 3, terminará en la segunda iteración.
Sea n=5, será como 5 – 14 – 7 – 20 – 10 – 5 – y ahora se repetirá.
Y cualquier número con un factor de 5 y 2, hay infinitas recursiones posibles.
Entonces, (iv) es VERDADERO y (iii) es falso.

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 *