A-A+

有以下程序: int fun(int x) { int p; if(x==0||x==1)r

2022-08-05 21:11:21 问答库 阅读 172 次

问题详情

有以下程序: 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。

考点:程序