当前位置:首页 > JAVA教程 >

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

发布时间:2023-09-11 09:18:50 作者:佚名 阅读:(15)

今天云梦编程为大家分享一下java经典实例:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?有需要的小伙伴可以参考一下:

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

1、问题分析:

这个问题其实就是一个菲波拉契数列问题:

    实际月份 1 2 3 4 5 6 7 8

    幼仔对数 1 0 1 1 2 3 5 8

    成兔对数 0 1 1 2 3 5 8 13

    总体对数 1 1 2 3 5 8 13 21

    幼仔对数=前月成兔对数

    成兔对数=前月成兔对数+前月幼仔对数

    总体对数=本月成兔对数+本月幼仔对数

2、结论:

前面相邻两项之和,构成了后一项

3、程序代码:

    (1)、使用递归方法进行编码:

public static void main(String[] args) { 
	System.out.println("第24个月的兔子对数: " + fun(24));
}

private static int fun(int month) { 
	if (month <= 0) {
		return 0;
	} else if (month <= 2) {
		return 1;
	}
	return fun( month - 1) + fun( month - 2);
}

    (2)、使用循环方法进行编码:

public static void main(String[] args) { 
	System.out.println("第1个月的兔子对数:    1");
	System.out.println("第2个月的兔子对数:    1");
	int f1 = 1, f2 = 1, temp;
	for (int month = 3; month <= 24; month++) {
		temp = f2;
		f2 = f1 + f2;
		f1 = temp;
		System.out.println("第" + month + "个月的兔子对数: " + f2);
	}
}

以上就是云梦编程为大家介绍的有一对兔子,从出生后第3个月起每个月都生一对兔子相关问题的解决方法,了解更多相关文章请关注云梦编程网!

© 2023 - 云梦编程网 版权所有 鲁ICP备2021017318号-4