问题描述
兔子在出生两个月以后,就具有生殖后代的能力。假设一对兔子,每月都能生一对兔子,生出来的每一对小兔子,在出生两个月后,也每月生一对兔子。那末,由一对刚出生的小兔子开始,连续不断地繁殖下去,在某个指定的月份有多少对兔子?
假设初始状态为0月
具体见下面的表格

【输入样例】
9
【输出样例】
55
输入
输入第N个月,N>=1且 N<=60
输出
输出总的兔子的数量,注意这个结果可能非常大,比如
当N=60时,算出来的兔子数量为2504730781961
样例输入
9
样例输出
55
刚开始想复杂了 后来发现只要总数 发现总数的规律又是菲波那契数列的规律
第三个数=前两个数之和
f(n)=f(n-1)+f(n-2) 、、(感觉这个公式递归好常见到,可能是我接触的比较浅吧)
就这样就解决了 对于没有数据约定的这样就好了
但这道题数据约定为<=60,当输入60时根本跑不动,数据比较多时,之前跑得到答案的又重新跑,所以比较没效率
于是我借助了数值 存储下有跑过的子递归值 只要return 回数组存的值就好了(好像叫查表??)
代码如下
import java.util.*;
public class Main {

本文探讨了兔子繁殖问题,指出其与斐波那契数列的关系。通过递归算法解决该问题,但当数据规模较大时(如N=60),直接递归会导致效率低下。为了提高效率,引入了存储子递归结果的查表方法,降低重复计算,从而减少程序运行时间。
最低0.47元/天 解锁文章
3572

被折叠的 条评论
为什么被折叠?



