斐波那契数列

斐波那契数列(C语言)

描述:斐波那契数列(Fibonacci sequence),指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n ≥ 2,n ∈ N*)

具体展开:斐波那契数列可以衍生为一些实际问题,比如爬楼梯问题和兔子繁殖问题

爬楼梯问题:小明爬楼梯,他一次可以爬1阶楼梯或者2阶楼梯。如果爬1阶楼梯,共有1种方法;爬2阶楼梯,共有2种方法;爬3阶楼梯,共有3种方法;爬4阶楼梯,共有5种方法…如果爬n阶楼梯,共有多少种方法?这显然是一个斐波那契数列,F(n)=F(n-1)+F(n-2)。同时也可以这样理解:如果要爬到n阶,那么这个人必须先爬到n-1阶或者n-2阶。如果爬到n-1阶,那么只需要一次爬1阶就可以到达n阶;如果爬到n-2阶,那么只需要一次爬2阶就可以到达n阶。所以,爬到n阶的方法=爬到n-1阶的方法+爬到n-2阶的方法。

兔子繁殖问题:有1只兔子,从出生后第3个月起每个月都生1只兔子,小兔子长到第3个月后每个月又生1只兔子,假如兔子都不死,问每个月的兔子总数为多少?
第1个月,有1只兔子;第2个月,有1只兔子;第3个月,有2只兔子;第4个月,有3只兔子;第5个月,有5只兔子…这显然又是一个斐波那契数列,F(n)=F(n-1)+F(n-2)。同时也可以这么理解:要求第n个月的兔子,首先第n-1个月的兔子在第n个月全部活着,即有F(n-2)只兔子。而对于第n-2个月的兔子,一部分是最新出生的兔子(第n个月就是他们的第3个月),一部分是老兔子。所以第n-2个月的所有兔子都在第n个月生1只兔子,即有F(n-2)只兔子。最终可以得到F(n)=F(n-1)+F(n-2)。

以下是具体代码:

#include <stdio.h>
int main()
{
    int i,n;
    int f[100];
    f[0]=f[1]=1;
    while((scanf("%d",&n)!=EOF))
    {
        for(i=2;i<=n;i++)
        {
            f[i]=f[i-2]+f[i-1];
        }
        printf("%d\n",f[n-1]);
    }
    return 0;
}
  • 29
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值