
1137 第 N 个泰波那契数(迭代、记忆性递归)
发布日期:2021-05-07 21:53:30
浏览次数:10
分类:技术文章
本文共 1322 字,大约阅读时间需要 4 分钟。
1. 问题描述:
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2,给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:
输入:n = 4
输出:4 解释: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4示例 2:
输入:n = 25
输出:1389537提示:
0 <= n <= 37
- 答案保证是一个 32 位整数,即
answer <= 2^31 - 1
2. 思路分析:
这道题目与斐波那契数列的的解决方法是一样的,可以使用迭代与记忆性的递归来解决,可以使用三个变量进行迭代即可,记忆性的递归可以使用一个列表来进行记录中间的结果,当递归到之前求解过的值之后那么就直接返回而不是继续往下进行递归了,我们使用记忆性的递归的时候肯定是从n 比较大往小的方向进行直到n减到0或者是1或者是2的时候就停止递归了(因为这样才可以求解出对应的结果),可以从简单的例子来进行理解,比如求解T3,那么肯定是要求解出T0, T1, T2,对于T4也是一样的,所以可以轻松得到递归的式子为Tn = Tn - 1 + Tn - 2 + Tn - 3(n >= 3)当n = 0, 1, 2的时候直接返回对应的结果即可,我们在求解的过程中可以将求解过的值放入到列表中,这样可以避免对于相同的n进行重复的递归
3. 代码如下:
迭代:
class Solution: def tribonacci(self, n: int) -> int: if n == 0: return 0 T0, T1, T2 = 0, 1, 1 for i in range(n - 2): T0, T1, T2 = T1, T2, T0 + T1 + T2 return T2
记忆性递归:
from typing import Listclass Solution: # 记忆性的递归 def tribonacci(self, n: int) -> int: nums = [0 for i in range(38)] nums[1], nums[2] = 1, 1 def recursion(k: int, nums: List[int]) -> int: if k == 0: return 0 if k == 1 or k == 2: return 1 if nums[k]: return nums[k] nums[k] = recursion(k - 1, nums) + recursion(k - 2, nums) + recursion(k - 3, nums) return nums[k] return recursion(n, nums)
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月11日 22时13分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C语言的数值溢出问题(上)
2019-03-05
BottomNavigationView控件item多于3个时文字不显示
2019-03-05
关于RecyclerView嵌套RecyclerView的实现
2019-03-05
玩家猜数游戏(v2.0)
2019-03-05
函数指针的典型应用-计算函数的定积分(矩形法思想)
2019-03-05
8051单片机(STC89C52)八个LED灯闪烁
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
基于8051实现的双倒计时器(Version1.0)
2019-03-05
8051单片机(STC89C52)之蜂鸣器发声
2019-03-05
参数检验之t检验
2019-03-05
ament: command not found ROS2
2019-03-05
双变量的t检验
2019-03-05
用 wxPython 打印你的 App
2019-03-05
wxPython:引用、展示图片、Stock IDs、操作剪切板、拖拽
2019-03-05
网页设计所需要的工具,各个岗位的职能,都在这里了
2019-03-05
android GPS JAVA 获取GPS功能是否禁用
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
Linux下安装MySql过程
2019-03-05
原生vue实现VantUI中IndexBar索引导航栏功能
2019-03-05