问题 单项选择题

下述程序的输出结果是( )。 long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } main() { printf("%1d\n",fun(3)); }

A.1

B.2

C.3

D.4

答案

参考答案:A

解析: 本题的fun函数是一个递归函数,当参数n为1或2时返回2,否则返回n-fun(n-1)。递推下来就是n-fun(n-1)=>n- ((n-1)-fun(n-2))=>n-(n-1)+((n-2)-fun(n-3))=>……直到fun()函数的参数等于1或2,故fun(3)=3-fun(2)=3-2=1。所以答案是 A。

单项选择题
多项选择题