C语言fun函数问题

有下面的题:#include <stdio.h>
int fun (int n, int *s)
{ int f1,f2;
if (n==1||n==2) *s=1;
else
{ fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2;}

main()
{int x;
fun(6,&x); printf("%d\n",x);
}
为什么结果是8, fun(int n,int *p)什么意思,就像fun(6,&x)都解释下

1、首先,我们要调用函数的库文件。

2、然后我们输入Printf函数构成语句。

3、接下来我们知道这个函数是返回双精度类型,【lf】。

4、然后我们输入一个测试的数值。

5、然后就可以开始运行测试。

6、这时候就可以看到结果。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-28
fun(int n, int *p)是有两个参数,第二个参数是个指针,可以用于传递返回值。

这个函数是一个递归函数,当n=1或2的时候,返回的是1,否则递归运行。
初始n=6,这里假定把通过S返回的值作为函数的返回值。相当于下面的运算。

f(6,s)
=f(5,s) +f(4,s)
=f(4,s) +f(3,s) +f(3,s) +f(2,s)
=f(3,s)+ f(2,s)+f(2,s)+f(1,s)+f(2,s)+f(1,s)+1
=f(2,s)+f(1,s)+1 +1 +1 +1 +1 +1
=1 +1 +6
=8本回答被提问者和网友采纳
第2个回答  2012-08-23
非普那且数列 1,1,2,3,5,8,13 ...
第6个就是8
第3个回答  2012-08-23
递归调用
fun(6,&x) 按址传递参数,x的结果等于*s
相似回答