如果在调用之前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