算法之费氏序列

费氏序列:基本是以兔子为模型的,这里暂且不考虑公母啊,怎么生的问题。就是有一只兔子,每个月生一只兔子,小兔子一个月后又可以投入生产,这样两个月后就有2只兔子,三个月后有3只兔子,四个月后就有5只兔子。。。。。。

由此可以列出一串数字:1 , 1, 2, 3 ,5 ,8 ,13 ..........

简单归纳一下可以发现当第一个月和第二个月的时候都只有1只兔子,之后的兔子数目为前两个月的兔子之和,也就是之前本月的兔子数,加上上个月的兔子生的小兔子数。

简单归纳为:F(0) = F(1) = 1;

                (n>=2)时 ,     F(n) = F(n-1) +  F(n-2);

由此可知,有代码实现基本有两种思路:1.数组  2.递归 代码量不大,直接合二为一,参考如下code:

#include<stdio.h>
#define MAX 30
int fabo(int n)
{
    if(n==1||n==0)
    return 1;
    else
    return fabo(n-1)+fabo(n-2);
}

int main()
{
  int i,f;
  int Fi[MAX] = {0};
  Fi[0] = 0;
  Fi[1] = 1;
  for(i=2;i<MAX;i++)
    Fi[i] = Fi[i-1]+Fi[i-2];
  for(i=0;i<MAX;i++)
    printf("Fi[%d] = %d\n",i,Fi[i]);
  f = fabo(MAX-1);
    printf("Fabo[MAX-1] = %d\n",f);
  return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值