计算递归python中的迭代次数

时间:2013-07-08 02:43:48

标签: python recursion iteration

我看到了关于如何在递归函数中保持计数的线程,但我没有完全按照答案,它似乎也不适用于我正在寻找的东西(至少从我可以告诉所以对不起如果这是一个重复的问题!)。我正在编写一段代码来解密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循环,但我喜欢我所写的优雅。我倾向于一个全局变量(我将在此之后尝试),但我觉得有一个更好的解决方案。提前感谢您回答或更好地解释我所提到的主题中的那个。

1 个答案:

答案 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

为函数提供一个跟踪递归深度的参数,或者将递归放在带有这样一个参数的辅助函数中。