一个关于C的问题?请教

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:58:31
请帮手解释一下这个程序代码是如何执行的,特别是关于型参和实参部分!!谢谢
#include "stdio.h"
long fun(int n)
{
long s;
if((n==1)||(n==2))
s=2;
else
s=n+fun(n-1);
return s;
}
void main()
{
long x;
x=fun(4);
printf("%d\n",x);//最后X的值为什么输出会是9呢??
}

这是一个递归算法。

fun()函数不断的调用自己,直至n的值在1或者2.

以您给出的代码为例:
当执行x=fun(4)后,整数4就被赋予int n,如果n的值不是1或者2,那么就执行
s=n+fun(n-1); 此时n的值为4,然后fun(3)调用,重复上述过程,直至n=1,或者n=2返回S的值。

以上~~~