兔子生兔子的问题

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


思路:

1.计算每对兔子的子女数(子女的子女不算),假设到第M个月,这一对兔子出生是在第N个月,则子女数为 sum = ( M - N - 1) * 2,然后递归算出每一对兔子的子女数,所有兔子的子女数相加,就是兔子总数,然而递归过程写得有点问题_(:з」∠)_暂时没调好;

2.随着月份数增加,兔子总数呈现斐波拉契数列:1,1,2,3,5,8,13,21,……,即 f(n) = f(n-1) + f(n-2) (具体参考博文:点击打开链接


代码:

输入:月份M

输出:当前月份兔子总数

import java.util.Scanner;

public class Rabbit {

	private static int sumRabbit(int Month) {
		int sum = 0;
		if (Month < 3) {
			sum = 1;
		} else {
			sum = sumRabbit(Month - 1) + sumRabbit(Month - 2);
			// System.out.println("Month: "+Month+" ; sum= " + sum);
			return sum;
		}
		return sum;
	}

	public static void main(String[] args) {
		int Month;
		Scanner sin = new Scanner(System.in);
		do {
			Month = sin.nextInt();
			System.out.println("第" + Month + "个月生出的兔子有"
					+ (new Rabbit()).sumRabbit(Month) + "只");
		} while (sin.hasNext());
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值