算法之兔子的斐波那契数列新解

代码:

public class Rabbit2 {

    public static void main(String[] args) {

        Rabbit2 rabbit2 = new Rabbit2();

        for (int i = 0; i < 10; i++) {

            System.out.println(i + ":\t" + rabbit2.getStandAnswer(i) + "\t," + rabbit2.getRst(i) + ",\t Real count:" + rabbit2.getRst(i) * 2);

//            rabbit2.getRst(i);

        }

    }

 

    private int getStandAnswer(int month) {

        if (month == 0 || month == 1) {

            return 1;

        }

        return getStandAnswer(month - 1) + getStandAnswer(month - 2);

    }

 

    public int getRst(int month) {

        int age0 = 0;

        int age1 = 0;

        int age2 = 0;

        age0 = getAge0(month);

        age1 = getAge1(month);

        age2 = getAge2(month);

        int count = age0 + age1 + age2;

//        System.out.println(month + ":\t" + age0 + ",\t" + age1 + ",\t" + age2 + ".\t" + count);

        return count;

    }

 

    private int getAge2(int month) {

        if (month < 0) {

            return 0;

        }

        if (month == 0 || month == 1) {

            return 0;

        }

        return getAge1(month - 1) + getAge2(month - 1);

    }

 

    private int getAge0(int month) {

        if (month == 0) {

            return 1;

        }

        if (month < 0) {

            return 0;

        }

        if (month == 1) {

            return 0;

        }

        return getAge2(month);

    }

 

    private int getAge1(int month) {

        if (month < 0) {

            return 0;

        }

        if (month == 0) {

            return 0;

        }

        if (month == 1) {

            return 1;

        }

        return getAge0(month - 1);

    }

}

 

输出答案:

0:        1        ,1,         Real count:2

1:        1        ,1,         Real count:2

2:        2        ,2,         Real count:4

3:        3        ,3,         Real count:6

4:        5        ,5,         Real count:10

5:        8        ,8,         Real count:16

6:        13        ,13,         Real count:26

7:        21        ,21,         Real count:42

8:        34        ,34,         Real count:68

9:        55        ,55,         Real count:110

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值