斐波那契数列
作者:互联网
为何什么用字典保存计算结果而不是列表?
使用字典的优势:
- 不必像使用列表一样提前分配内存
- 在字典中存入0,1对应的斐波那契数之后不必对0,1特殊处理
- 某个数是否算过的判断方式比列表更优雅
点击查看代码
class Solution:
def fib_help(self, n, nb):
if n < 2:
return n
# 如果n已经计算过了,那么直接返回
if nb[n] != 0:
return nb[n]
else:
# 判断n-1, n-2是否需要重新计算
if nb[n-1] == 0:
nb[n-1] = Solution.fib_help(self, n-1, nb)
elif nb[n-2] == 0:
nb[n-2] = Solution.fib_help(self, n-2, nb)
return nb[n-1] + nb[n-2]
def fib(self, n: int) -> int:
# 提前分配为列表分配内存
# 希望给一个n,能求出对应的斐波那契数
# 斐波那契数从0开始,所以要存n+1个数
nb = [0] * (n+1)
return Solution.fib_help(self, n, nb)
点击查看代码
def fib_help(self, n, nb = {0: 0, 1: 1}):
if n in nb:
return nb[n]
else:
if n-1 not in nb:
nb[n-1] = Solution.fib_help(self, n-1, nb)
elif n-2 not in nb:
nb[n-2] = Solution.fib_help(self, n-2, nb)
return nb[n-1] + nb[n-2]
def fib(self, n: int) -> int:
return Solution.fib_help(self, n)
标签:fib,return,数列,self,Solution,斐波,那契,nb,help 来源: https://www.cnblogs.com/Yuetao-Meng/p/16455762.html