单选题 以下程序的输出结果是______。
#include <stdio.h>
long fun(int n)
{ long s;
if(n==1||n==2)
s=2;
else
s=n+fun(n-1);
return s;
}
main()
{ printf("/n% ld", fun(4));
}
  • A.7
  • B.8
  • C.9
  • D.10
【正确答案】 C
【答案解析】[解析] 此题考查基本的函数递归调用方法。程序在n=1或n=2时是出口条件,不再递归,否则一直执行s=ns+fun(n-1)的操作。展开此求和公式,有s=4+fun(3)=4+3+fun(2)=4+3+2=9。如果调用函数fun()的实参大于等于2,出口n==1的判断就不需要了。