我很高兴在这里问我的第一个问题。我遇到了一些递归问题。我正在用 Python 编码。
我正在使用字典将先前求解的数字存储在数学序列中。然后我在解决后面的序列时检查这本字典,以使程序运行得更快。每个键代表已解决的“起始数字”,值表示序列采用特定公式将起始数字降低到 1 所需的时间。
我正在使用递归解决问题,这本身很容易,但对我来说还有更多。
每个递归步骤都让我有机会更新库中的不同密钥,但我无法找到执行此操作的方法。
所以如果一个序列看起来像 13 -> x -> y -> z ... -> 1,你会怎么做不仅用值更新 13 键,还更新字典中的 x、y、x 值在同一递归路径中?现在我只能为每个序列更新一个数字。
cache = {1:1}
def solve(number):
if cache.has_key(number):
return cache[number]
else:
if condition one..
return 1 + solve(number * formula 1)
else condition two...
return 1 + solve(number * formula 2)
for x in xrange(1,1000):
cache[x] = solve(x) <-- right now only cache[x] is being updated.
谢谢!