您的位置:首页 > 其它

兔子生兔子的问题

2015-10-09 13:10 288 查看
题目:古典问题:有一对兔子,从出生后第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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: