A-A+
有以下程序: int fun(int x) { int p; if(x==0||x==1)r
问题详情
有以下程序: int fun(int x) { int p; if(x==0||x==1)return(3); p=x-fun(x-2); return p; } main { printf("%d\n",fun(7));} 执行后的结果是()。
A.7
B.3
C.2
D.0请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:C
调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);调用函数fun(3)时,由于x的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);调用函数fun(1)时,由于X的值为1,执行语句“return(3);”,函数的返回值为3。因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。答案为C。