如果在调用之前将p的值初始化为5,则f(p,p)的返回值是多少?请注意,第一个参数是通过引用传递的,而第二个参数是通过值传递的。
int f(int &x, int c) {
c = c - 1;
if (c == 0) return 1;
x = x + 1;
return f(x, c) * x;
}
(A) 3024
(B) 6561
(C) 55440
(D) 161051答案: (B)
说明:由于c通过值传递而x通过引用传递,因此所有函数将具有x的相同副本,但c的副本不同。
f(5,5)= f(x,4)* x = f(x,3)* x * x = f(x,2)* x * x * x = f(x,1)* x * x * x * x = 1 * x * x * x * x = x ^ 4
由于x在每个函数调用中都会递增,因此在f(x,2)调用后x变为9。因此,表达式x ^ 4的值变为9 ^ 4,即6561。
#include
int f(int &x, int c)
{
c = c - 1;
if (c == 0) return 1;
x = x + 1;
return f(x, c) * x;
}
int main()
{
int p = 5;
printf("%d", f(p, p));
}
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。