美文网首页
用兔子的增长来讲迭代算法

用兔子的增长来讲迭代算法

作者: 大黑跟小白的日常 | 来源:发表于2019-07-10 11:45 被阅读0次

    计算需求

    题目:古典问题:有一对兔子,从出生后第3 个月起(满三个月即开始生)每个月都生一对兔子,小兔子长到第三个月时又开始每个月生一对小兔子,假如兔子都不死,问n个月之后共有多少对兔子?

    具体代码如下

    public static int f(int month) {
            if (month < 3) {
                return 1;
            }
            // 初始值 为 第三个月 时的 数据
            int m0 = 1, m1 = 0, m2 = 0, m3 = 1, sum = 0;
            for (int i = 4; i <= month; i++) {
                // 具体迭代规则
                m3 += m2;
                m2 = m1;
                m1 = m0;
                m0 = m3;
            }
            sum = m3 + m2 + m1 + m0;
            System.out.println("刚出生:" + m0);
            System.out.println("1个月了:" + m1);
            System.out.println("2个月了:" + m2);
            System.out.println("已经生育了:" + m3);
            return sum;
        }
    

    还有一种算法–递归

    这个月的兔子,等于上个月的兔子数加上这个月新生的兔子数;
    而这个月新生兔子数,刚好又是前两个月已经存在兔子所生,所以等于前两个月的兔子数;
    可以得到,f(x)=f(x-1)+f(x-2),x>2

    相关文章

      网友评论

          本文标题:用兔子的增长来讲迭代算法

          本文链接:https://www.haomeiwen.com/subject/mdwckctx.html