C++参考文献1

如果在调用之前p的值被初始化为5,那么f(p,p)的返回值是多少?请注意,第一个参数是通过引用传递的,而第二个参数是通过值传递的。

null
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)调用之后变成9。所以表达式x^4的值变成了9^4,也就是6561。

#include <stdio.h>
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));
}


这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享