斐波拉契用函数的方法进行的输出
#include<stdio.h>
int main()//用函数实现斐波拉契1,1,2,3,5....
{
int n,i,sum;
printf("请输入所求的前N项:");//此处可以保障灵活性
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fun(i);
printf(" %d ",fun(i));
}
return 0;
}
int fun(n)//有返回值得函数
{
while(n==1||n==2)
return 1;
return fun(n-1)+fun(n-2);
}
斐波拉契运用循环的方式输出的
#include<stdio.h>
int main()
{
int f1=1;
int f2=1;
int f3;
int i;
printf("%d %d",f1,f2);
for(i=1;i<=10;i++)
{
f3=f1+f2;
printf(" %d ",f3);
f1=f2;
f2=f3;
}
return 0;
}
算法的解释
我们会观察到斐波拉契的规律就是1 1 2 3 5.....就是类似于前两项进行相加得出第三项
函数法的讲解
int fun(n)
{
while(n==1||n==2)
return 1;
return fun(n-1)+fun(n-2);
}
在斐波拉契函数中我们运用有返回值的传参,我们会发现一个规律,前两项的值一般是一样的,所以我们可以把前两项直接让他返回到一个准确的值。对于后面的项,比如fun(4)=fun(3)+fun(2),此时fun(3),fun(2)会继续往回走,直到遇见准确返回值,fun(3)=fun(2)+fun(1).
所以fun(4)=fun(1)+fun(2)+fun(2)。同样遇见其他倒推就可以。