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