单选题
有以下程序:
fun(int X)
int p;
if(X==011X==1)return(3);
P=X-fun(X-2);
return p;
main()
(printf(“%d/n”,fun(7)
执行后的输出结果是( )。
【正确答案】
C
【答案解析】[解析] 本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的fun()函数在x等于0或1时返回3,而在其余情况下返回X-fun(X-2),所以本题的递归算法可以这样表示:
fun(X)=3(X=0或X=1)(初始值)
fun(X)=X-fun(X-2)(X≠0且X≠1)(递归关系)
在主函数中输出的结果是fun(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))。