试题题干
#include <stdio. h>
long fun(int n)
{ long s;
if(n<=2)s=2;
else s=n+fun(n-1);
printf(″%d\t″, s);
return s;
}
main( )
{
fun(5);
printf(″\n″);
}
参考答案
试题解析
在主函数中的f(5)需要调用函数f(),因为n=5,所以执行s=n+fun(n-1),即s=5+fun(4);fun(4)需要递归调用函数f(),因为n=4,所以执行s=n+fun(n-1),即s=4+fun(3);fun(3)需要递归调用函数f(),因为n=3,所以执行s=n+fun(n-1),即s=3+fun(2);fun(2)需要递归调用函数f(),因为n=2,所以执行s=2,即最后s=5+4+3+2,因为函数中出现printf(″%d\t″, s); return s; 即输出的是f(2),f(3),f(4),f(5),故值为2,5,9,14。