生兔子问题(递归算法)

作业一、有一对兔子,生长三个月后。开始生第一对兔子,并且以后每月生一对兔子,小兔子生长三个月后,也开始生兔子,问N个月后兔子的总数量

package org.westos.homework;

import java.util.Scanner;

/**
 * 生兔子对数问题(使用递归算法)
 * 通过计算前几个月:1  2  3  4  5  6  7 ...
 *        兔子总数 :1  1  2  3  4  6  9...
 * @author 代虎
 *
 */
public class HomeWork01 {
    public static long number(int mouth) {
        if(mouth < 0) {
            System.out.println("您输入的数字有误");
        }
        if(mouth ==1 || mouth ==2 || mouth ==0 ) {//刚开始和第一、第二个月只有一对兔子
            return 1;
        }else
            return number(mouth-1)+number(mouth-3);//前一月兔子数+通过生长三个月后,可以生育的兔子
    }

    public static void main(String[] args) {
        System.out.println("请输入您要求出多少月之后的兔子数?(必须为数字)");
        while(true) {
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            char[] ch = str.toCharArray();
            if(str.equals("exit")) {
                System.exit(0);
                break;
            }
            Integer mouth = 0;
            long count = number(mouth.valueOf(str));
            System.out.println("在"+ str + "月后,兔子对数为"+ count+ "对");

                System.out.println("==============下一个===============");
                System.out.println("继续请输入数字,退出输入exit");



        }
        }

}



程序运行如下:
请输入您要求出多少月之后的兔子数?(必须为数字)
20
在20月后,兔子对数为1278对
==============下一个===============
继续请输入数字,退出输入exit
12
在12月后,兔子对数为60对
==============下一个===============
继续请输入数字,退出输入exit
exit

“`

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Champion-Dai

你的鼓励将是我创作最大的动力,

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值