第 3 题
执行完下列语句段后,i 值为( )。
A. 2 B. 4 C. 8 D. 无限递归
[tag_link]
正确答案:B
首先,函数 f 是递归函数,其定义为:当参数 x 大于 0 时,返回 x 乘以 f(x-1); 当 x 不大于 0(即 x ≤ 0)时,返回 2。 语句 `i = f(f(1));` 的执行过程分为两步:先计算内层 `f(1)`,再将结果作为参数计算外层 f。
计算 `f(1)`:由于 1 > 0,返回 `1 * f(0)`。 计算 `f(0)`:0 不大于 0,因此返回 2。 所以 `f(1) = 1 * 2 = 2`。
然后计算外层 `f(f(1))` 即 `f(2)`。 对于 `f(2)`:2 > 0,返回 `2 * f(1)`。 而 `f(1)` 已计算为 2,因此 `f(2) = 2 * 2 = 4`。 最终 i 的值为 4。
递归过程有限,因为对于正整数参数,递归总是递减到 0 后终止,不会无限递归。 因此正确答案为 B。