#include int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;} return 0;void main(){int x;fun(6,&x);printf("%d\n",x);}不会,完全看不懂.标记下.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/26 17:21:01
#include int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;} return 0;void main(){int x;fun(6,&x);printf("%d\n",x);}不会,完全看不懂.标记下.
#include int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;} return 0;void main(){int x;fun(6,&x);printf("%d\n",x);}不会,完全看不懂.标记下.
#include int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;} return 0;void main(){int x;fun(6,&x);printf("%d\n",x);}不会,完全看不懂.标记下.
这个函数是使用递归算法计算斐波纳契数列的,那个数列是这样的:
1,1,2,3,5,8,13,21.依此类推
大致解释如下,你看看吧,应该能看明白了吧.
#include
int fun(int n,int *s)
{
\x09int f1,f2;
\x09if(n==1 || n==2) // 如果是第一个或者第二个数,他们均为1
\x09\x09*s=1;
\x09else
\x09{
\x09\x09fun(n-1,&f1); // 递归计算前一个
\x09\x09fun(n-2,&f2); // 递归计算前两个位置的
\x09\x09*s=f1+f2; // 数列的定义就是当前位置是前两个数字之和
\x09}
\x09return 0;
}
int main()
{
\x09int x;
\x09fun(6,&x); // 看看数列第六个位置是不是8
\x09printf("%d\n",x);
\x09\x09fun(8,&x);
\x09printf("%d\n",x);// 看看数列第8个位置是不是21
\x09return 0;
}