我遇到了一个奇怪的现象:
我写了一个计算“卡塔兰数”的代码,它可以正常工作,但现在我正在尝试通过使用备忘录字典(称之为dicatalan)来提高运行时间:
dicatalan = {}
def catalan(n):
if n == 0:
return 1
else:
res = 0
if n not in dicatalan:
for i in range(n):
res += catalan(i) * catalan(n - i - 1)
dicatalan[n] = res
print ("dicatalan is", dicatalan)
return dicatalan[n]
这里有个问题 - 在eclipse的Pydev中,当n = 1时,代码会运行到一半并按预期打印出“dicatalan is 1:1”,然后神秘地停止,但在IDLE中相同的代码会打印“dicatalan is 0:1”。
无论如何,当我试图稍后打印dicatalan时,我收到了{}。
这怎么可能?代码发生了什么?
运行调试器被证明是徒劳的。
有没有想法让字典正常工作?