我编写了一个程序,该程序基本上通过从它创建的字典中读取来执行斐波那契(给定 {0:0, 1:1} 开始)。显然,如果字典中没有它,它将创建直到它出现,然后再调用,因此它不必一遍又一遍地执行相同的序列。我遇到的困难是使用 Counter 对象来跟踪算法完成的指令(因此我可以随后绘制随着初始 n 增加的调用次数的图表)。之前从未使用过类 Counter 或 memoization,所以最后我有点迷失了。
dic = {0:0, 1:1}
def main():
n = int(input("Number to Fibonacci?"))
fib(n)
print(dic[n])
Counter()
memoization(n, Counter, dic)
def fib(n):
if n in dic:
return dic[n]
else:
if n < 2:
dic[n] = n
else:
dic[n] = fib(n-2) + fib(n-1)
return dic[n]
class Counter():
def __init__(self):
self._number = 0
def increment(self):
self._number += 1
def __str__(self):
return str(self._number)
def print():
print(str(self._number))
def memoization(n, Counter, dic):
if n in dic:
return dic[n]
else:
c.increment()
main()
这就是我所拥有的,但老实说,我不知道从哪里开始,非常感谢任何帮助!