A-A+

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

2022-08-06 06:39:30 问答库 阅读 176 次

问题详情

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

考点:程序