📜  C++ |参考书目问题1

📅  最后修改于: 2021-05-26 00:00:24             🧑  作者: Mango

如果在调用之前将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基础课程》。