[HJ37] 统计每个月兔子的总数

华为机试题库 HJ37

描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,
小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
输入描述:
输入int型表示month
输出描述:
输出兔子总数int型
示例1
输入:9
输出:34

从题目看,第一个月,第二个月都是1只兔子 , 明显是斐波那契数列(一个数列从第三项起 每一项都是前两项之和)。

1月 1只
2月 1只
3月 1只(老兔) + 1只(新生)
4月 1只(老兔) + 1只(新生)+ 1只(新生)
5月 1只(老兔) + 1只(老兔)+ 1只(新生)+ 1只(新生)

采用递归方法

/**
 * @auther: 巨未
 * @DATE: 2021/8/30 0030 15:41
 * @Description:
 */
import java.util.*;

public class Main{

  
    // 统计每个月兔子数量 斐波那契 递归
    public static void febonaci(){
         Scanner s = new Scanner(System.in);
        while (s.hasNext()) {
            int month = s.nextInt();
            System.out.println(rabbit(month));
        }
    }
    public static int rabbit(int month){
        if(month == 1 || month == 2) {
            // 前两个月都是1只
            return 1;
        }
        return rabbit(month-1) + rabbit(month-2);
    }
    public static void main(String[] args) {
        febonaci();
    }
}

打印结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值