C语言程序题 看不懂,求帮忙;程序的结果是什么 怎么得出来的?

#include<stdio.h>
fib(int n,int *p)
{
int f1,f2;
if(n==1||n==2)
*p=1;
else
{
fib(n-1,&f1);
fib(n-2,&f2);
*p=f1+f2;
}
}

int main()
{
int x;
fib(6,&x);
printf("%d\n",x);
return 0;
}

这是求斐波拉契数列的第6项,结果为8。


追问

每一步都是什么意思 可以解释一下吗

追答

这个要解释清楚,一两句话说不清楚。 给一个不是指针的情况,把这个看懂了,用指针实现的自然就明白了。

晚安!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-07
程序运行结果为:8

就是一个函数的递归调用,当第一个参数等于1或者2时,给后面那个地址指向的变量赋值为1,当不满足等于1或者2时,两次对函数自身的调用。本回答被网友采纳
第2个回答  2014-12-07
运行一下就知道了追问

要的是流程 我也知道运行一下就出了。是8;关键是不明白为什么

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网