美文网首页
JAVA编程练习—第二题

JAVA编程练习—第二题

作者: 山楂mm | 来源:发表于2017-09-20 00:24 被阅读0次

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

看到题目,我首先拿笔列了一下,每个月的情况,如下:

        1个月  1对
        2个月  1对
        3个月  2对
        4个月  3对
        5个月  4对
        6个月  6对
        7个月  9对

我们可以看出,最后一个月的数据是前一个月的数据加上前3个月的数据,比如:7个月的对数=6个月的对数+4个月的对数;6个月的对数=5个月的对数+3个月的对数。因兔子出生是3个月能生小兔子。

由上面的规律,我们可以总结出,Sn=S(n-1) + S(n-3)

我们可以采用递归的方法,来计算,代码如下:

    public static void main(String[] args) {
        for(int i = 1; i <=12; i++) {
            System.out.println("第" + i + "个月,兔子的总对数:" + getRebbitSum(i));
        }
    }
    /**
     * 获取兔子的总数,试着用递归的方法写下
     * 其实就是Sn = S(n-1) + S(n-3)
     * @param n 月数
     */
    public static int getRebbitSum(int n) {
        if(n <= 2) {
            return 1;
        }
        return getRebbitSum(n-1) + getRebbitSum(n-3);
    }

执行结果如下图:

image.png

其实递归算法的效率还是挺低的,等我有时间写个非递归方法补充上。

相关文章

  • JAVA编程练习—第二题

    题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问...

  • Java程序算法题50道

    JAVA基础编程练习50题 本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,...

  • 第五周学习计划

    本周学习python相关内容,练习sql题,练习python编程题,尽量跟进度Õ_Õ

  • Java第二周编程题

    1 时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程...

  • 编程题练习

    方法体一行实现阶乘 n! 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序...

  • 编程题练习

    (来自牛客网https://www.nowcoder.com/[https://www.nowcoder.com/...

  • JAVA编程练习—第一题

    题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,...

  • java基础编程练习之谁拿了最多奖学金

    java基础编程练习之谁拿了最多奖学金

  • [编程题] Java基础编程练习题(二)

    1.编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。 2.编写程序,在...

  • 第五周学习总结

    本周已看了python基础知识的相关视频和PDF,练习了几道编程题,做编程题很没思路。

网友评论

      本文标题:JAVA编程练习—第二题

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