题5

题目

执行完下列语句段后, 的值为 ().

int f(int x) {
    return ((x > 0) ? x * f(x - 1) : 2);
}
 
int i;
i = f(f(1));

A. 2
B. 4
C. 8
D. 无限递归

分析

栈与递归有着紧密的联系。递归模型包括递归出口和递归体两个方面。递归出口是递归算法的出口, 即终止递归的条件。递归体是一个递推的关系式。根据题意有

f(0) = 2;
f(1) = 1 * f(0) = 2;
f(f(1)) = f(2) = 2 * f(1) = 4;

B