Java笔试题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(控制台输出30个月兔子的数量)

【题解】:先列出前几个月的兔子数量,发现规律,就是一个斐波那契数列

第1个月兔子数量为1对
第2个月兔子数量为1对
第3个月兔子数量为2对
第4个月兔子数量为3对
第5个月兔子数量为5对
第6个月兔子数量为8对
第7个月兔子数量为13对
第8个月兔子数量为21对

可以看出从第三个月开始,当月兔子数量为上个月与上上个月兔子数量相加所得,由此可得代码设计为

/**
 *  ZAY 2024.1.3
 * */
public class Rabbit {
    public static void main(String[] args) {
        System.out.println("第1个月兔子数量为1对");
        System.out.println("第2个月兔子数量为1对");
        int a = 0;//当月
        int x = 1;//上个月
        int y = 1;//上上个月
        int mounth = 30;
        for (int i = 3;i<=mounth;i++){
            a = x + y;
            System.out.println("第"+i+"个月兔子数量为"+a+"对");
            y = x;//将上个月数量赋给上上个月
            x = a;//将当月数量赋给上个月
        }
    }
}

附上斐波那契数列代码

public class Fibonacci {
    public static int fibonacci(int n) {
        if (n <= 1) {
            return n;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    public static void main(String[] args) {
        int n = 10;
        for (int i = 0; i <= n; i++) {
            System.out.print(fibonacci(i) + " ");
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值