斐波那契数列 迭代递归

斐波那契数列是一串 1 1 2 3 5 8 …
F(n)= F(n-1)+F(n-2) (n>2) F(n)=1;(n=1||n=2)
我们就简单的讨论一下的斐波那契数列 ,在初学者这里 递归可能比较难以理解这里我们用三种 方法 带大家 了解一下
1:递归 当然递归的本质其实也是一循环 ,递归也都是在栈中也实现的,栈具有先进后出的如果想要真正的了解递归
是必须了解 递归函数在栈中是如何让的执行的 递归永远都是这样看起来很简单 , 但会进行大量的运算,会消耗大量的内存
#include<stdio.h>
int Fin(int n){
if(n1||n2){
return 1;
}
return Fin(n-1)+Fin(n-2);
}
int main(){
int n;
scanf("%d",&n);
Fin(n);
printf("%d",Fin(n));
}

2:用数组和循环 用数组表示斐波那契数列项之间的关系, 计算量远远小于递归 ,递归其实是不断向下递推(入栈),找到出口,然后将返回值返给上层,以便求得最终的值,有兴趣的朋友可以去试试
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n];
a[0]=1;
a[1]=1;
int i=0;
for(i=2;i<n;i++){
a[i]=a[i-1]+a[i-2];
}
printf("%d",a[–i]);
}
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a=1,b=1,c=0;
if(n1||n2){
printf(“1”);
return 1;
}
for(int i=2;i<n;i++){
c=a+b;
a=b;
b=c;
}
printf("%d",c);
}
3:迭代的思想 迭代的本质其实也是循环, 其实仔细想起来 ,所有的算法题,都能找到规律,如数字之间的关系,等待
有人可能说,随机数的生成没有规律,记住没有规律本身就是一种规律,解法2和三其实一样的,在计算机的眼中不会拐弯,只是会计算,我们只需要做,将数据的关系用表达式表示出来交给计算机求解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值