模拟卷 数据结构 选择题
第 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。