函数f定义如下:
int f (int n) {
if (n <= 1) return 1;
else if (n % 2 == 0) return f(n/2);
else return f(3n - 1);
}
假定可以将任意大的整数作为参数传递给函数,请考虑以下语句。
1.函数f终止于n≥1的有限许多不同值。 ii。函数f终止于n≥1的许多不同值。 iii。函数f不会因n≥1的许多不同值而终止。 iv。函数f不会因n≥1的无限多个不同值而终止。下列哪个选项适用于上述情况?
(A) (i)和(iii)
(B) (i)和(iv)
(C) (ii)和(iii)
(D) (ii)和(iv)答案: (D)
说明:该函数对于因数为2 {(2.x)2 == 0}的所有值终止
因此,(i)为假,(ii)为TRUE。
令n = 3,它将在第二次迭代中终止。
令n = 5,它将变为5 – 14 – 7 – 20 – 10 – 5 –现在将重复。
并且任何因数为5和2的数字都有无限的递归可能。
因此,(iv)为真,(iii)为假。这个问题的测验