单选题 有以下程序:
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));
执行后的结果是( )。

【正确答案】 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。