zoukankan      html  css  js  c++  java
  • 2_兔子产仔问题

    题目

    如果一对两月大的兔子以后每个月都能生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,1月份出生,3月份才可以产仔。那么假定一年内没有产生兔子死亡事件,那么一年后共有多少对兔子?

    分析

    我们先来分析一下兔子产仔问题,逐月来看每月的兔子数量:

    第一个月: 1对
    第二个月: 1对
    第三个月: 2对
    第四个月: 3对
    第五个月: 5对

    从上面可以看出,从第三个月开始,每个月的兔子总对数,等于前两个月兔子对数的总和。

    显然的斐波那契数列,也是递推法的典型问题。

    第n个月兔子总量: Fn=Fn2+Fn1
    这里,初始第一个兔子F1=1, 第二个月兔子F2=1

    代码

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int Fibonacci(int n)
    {
        if (n == 1 || n == 2)
            return 1;
        else
            return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
    
    int main()
    {
        cout << "递推法求兔子产仔问题,请输入月份:" << endl;
        int n;
        while (cin >> n)
        {
            cout << n << "月后,兔子有:" << Fibonacci(n) << "对。" << endl;
        }
    
        system("pause");
        return 0;
    }

    GitHub源码下载

  • 相关阅读:
    POJ 3279 Fliptile 枚举+搜索
    POJ 3278 Catch That Cow
    CS Academy Round41 BFS+DFS
    CS Academy Round41 Tennis Tournament
    CS Academy Round41 Cinema Seats
    POJ 1177 Picture
    HDU 1255 覆盖的面积
    POJ 1151 Atlantis 线段树+离散化
    HDU 4614 Vases and Flowers 线段树+二分
    凑数问题
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214876.html
Copyright © 2011-2022 走看看