东方博宜OJ 1238:统计每个月兔子的总数 ← 递推 + long long
【题目来源】
【题目描述】
有一对兔子,从出生后第 3 个月起每个月都生一对兔子,一对小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死。
问第 n 个月(n≤50)的兔子总数为多少对?
【输入格式】
输入 1 个整数 n,表示第几个月。
【输出格式】
第 n 个月兔子的总数量有多少对?
【输入样例】
50
【输出样例】
12586269025
【数据范围】
n≤50
【算法分析】
● 递归实现的时间复杂度为 O(2^n)。n=30 时,需 2^30≈10^9次调用。n=50 时,需 2^50≈10^15 次调用。所以,在大多数系统上,递归实现无法处理 n>40 时的计算需求,通常在 n=30 左右即超时(TLE)。
● 本题需要采用 long long 数据类型。
【算法代码一:递推】
【算法代码二:递归】
本题中,n 会达到 50。所以,基于上文分析可知,下面递归的写法会超时(TLE)。
【参考文献】

浙公网安备 33010602011771号