gpt4 book ai didi

python - 递归函数中的内存

转载 作者:行者123 更新时间:2023-11-28 18:50:28 25 4
gpt4 key购买 nike

我遇到了一个奇怪的现象:

我写了一个代码来计算“Catalan Numbers”,这是有效的,但现在我试图通过使用 Memoization 字典(称为 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 中打印相同的代码“双加泰罗尼亚语是 0:1”。

无论如何,当稍后尝试打印 dicatalan 时,我收到了 {}。

怎么可能呢?代码中发生了什么?运行调试器被证明是徒劳的。

有什么让听写工作的想法吗?

最佳答案

对我来说也很好,我冒昧地稍微简化了你的代码:

def catalan(n, memo={0: 1}):
if n not in memo:
memo[n] = sum((catalan(i) * catalan(n - i - 1)) for i in range(n))
return memo[n]

关于python - 递归函数中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com