两种思考方式解决Java算法之经典兔子问题(斐波那契数列)

本文介绍了如何使用分析法和找规律法解决经典的兔子问题,即斐波那契数列在Java算法中的应用。通过解析问题,得出每月兔子总数等于前两个月兔子数之和,进而探讨了循环法和递归法的实现细节。
摘要由CSDN通过智能技术生成

题外话:今天小测验的题目考到了兔子问题 觉得对算法还是不能忽视 特此记录一下

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

解决:

1、思考方式一:分析法

已知 兔龄2个月及2个月以上的兔子 在新的1个月 每只都会生1对兔子
那么对于新的这个月来说 之前兔龄2个月及2个月以上的兔子就是2个月前的兔子总数
因为之前兔龄2个月及2个月以上的兔子到这个月已经可以生崽了 其中的每对都会生一对小兔子
也就是说 新的月相比上个月增加的兔子数是1个月前的兔子数(基数) + 2个月前的兔子(崽子 相当于是复制品 每对兔子复制一份崽子)
当月的兔子数等于前两个月的兔子数之和

2、思考方式二:找规律法

个月时 一对兔子成了两对兔子 其中一对是它自己 另一对是生下的崽子
个月时 两对兔子变成了三对 其中一对是最初的一对 另一对是上个月生的兔子 第三对是刚生下来的崽子
个月时 三对兔子变成了五对···
个月时 五对兔子变成了八对···
这组数从第三个数开始 每个数是前两个数的和
我们可以分析得到 每个月的兔子数量为1,1,2,3,5,8,13,21…
这是一种典型的斐波那契数列
在这里插入图片描述


好了 下面该上代码了:
实现方式也有两种 一种是循环法 另一种是递归法

循环法:

public static void main(String[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值