我遇到了一个奇怪的现象:
我写了一个代码来计算“加泰罗尼亚数字”,它有效,但现在我试图通过使用记忆字典(称为双加泰罗尼亚语)来改善运行时间:
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" 。
无论如何,在尝试打印以后的双加泰罗尼亚语时,我收到了 {}。
怎么可能?代码中发生了什么?运行调试器被证明是徒劳的。
有什么想法可以让 dict 工作吗?