问题
单项选择题
下述程序的输出结果是( )。 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。