我看到了关于如何在递归函数中保持计数的线程,但我没有完全按照答案,它似乎也不适用于我正在寻找的东西(至少从我可以告诉所以对不起如果这是一个重复的问题!)。我正在编写一段代码来解密Ceasar在几个不同位置转移的文本。我已经构建了一个递归函数,该函数可以很好地移动文本,直到它找到正确的移位并返回移位的文本,但是我无法让函数返回它迭代的次数。
text_to_shift = apply_coder(text[start:], build_decoder(1))
Ltext = text_to_shift.split()
for w in Ltext:
if is_word(wordlist, w) == True:
text = ' '.join(Ltext)
return text
else:
text = ' '.join(Ltext)
return find_best_shifts_rec(wordlist, text, start)
我可以把它写成一个while循环,但我喜欢我所写的优雅。我倾向于一个全局变量(我将在此之后尝试),但我觉得有一个更好的解决方案。提前感谢您回答或更好地解释我所提到的主题中的那个。
答案 0 :(得分:0)
def recursive_thing(calls=1):
# "calls" argument keeps track of recursion depth
if keep_recursing():
# pass a higher count to the recursive call
recursive_thing(calls + 1)
else:
print calls
return
为函数提供一个跟踪递归深度的参数,或者将递归放在带有这样一个参数的辅助函数中。