兔子繁衍 斐波那契数列 古典问题 java

阅读: 评论:0

兔子繁衍 斐波那契数列 古典问题 java

兔子繁衍 斐波那契数列 古典问题 java

问题

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

分析

根据题意可知

1,1,2,3,5,8, 13, 21...

这是斐波那契数列,也就是说从第三项起每一项都是前两项的和

递归法

时间复杂度很大,有些数会被重复算很多次

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

循环法

相比于递归法,效率高很多

private static long add(int month) {if(month <= 2) {	return 1;}long ago = 1;long result = 1;for(int i = 3; i <= month; i++) {result += ago;ago = result - ago;}return result;}

总结

递归法属于从需求项向前推算,导致很多项被重复计算,就算将重复计算存起来复用,又会占很多空间,这种情况可以考虑从第一项往后推到需求项。

本文发布于:2024-02-03 03:49:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690334048453.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数列   兔子   古典   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23