问题 单项选择题

有以下程序
#include<stdio.h>
int fun(int x)

int p;
if(x==0||x==1)
return(3);
p=x-fun(x-2);
return p;

main()

prinrt("%d\n",fun(7));

执行后的输出结果是______。

A.2
B.3
C.7
D.0

答案

参考答案:A

解析: 本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的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)))。

选择题
单项选择题 共用题干题