2013-07-08 3 views
0

Я видел поток о том, как сохранить счет в рекурсивной функции, но я не совсем последовал за ответом, и он также, похоже, не применим к тому, что я ищу (по крайней мере, от чего Я мог бы так жаль, если это повторяющийся вопрос!). Я работаю над фрагментом кода, чтобы расшифровать текст, который был перенесен в разные места. Я построил рекурсивную функцию, которая хорошо работает, чтобы сдвинуть текст до тех пор, пока он не найдет правильный сдвиг и не вернет сдвинутый текст, но я не могу заставить функцию возвращать количество повторений.подсчет итераций в рекурсии python

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

Это не ваша функция. Нам не хватает, по крайней мере, первой строки, начиная с 'def'. (Кроме того, «элегантность» и «склонность к глобальной переменной» не входят в одну и ту же должность.) – user2357112

+0

Дешевый и неприятный способ, который часто работает достаточно хорошо, - это посмотреть на глубину стека. –

+0

жаль, что я забыл добавить в заголовок для функции: def find_best_shifts_rec (wordlist, text, start): и что apply_coder() и build_decoder() - это функции, которые я ранее написал и работал так, как мне это нужно. Короче говоря, они сдвигают данный текст назад 1 письмо –

ответ

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 

Дайте вашей функции аргумент, который отслеживает глубину рекурсии или поместит рекурсию в вспомогательную функцию с таким аргументом.

Смежные вопросы