Счетчик внутри многократной рекурсии - PullRequest
0 голосов
/ 05 января 2020

Итак, я пишу код, который имеет несколько рекурсивных вызовов функций. И я хочу увеличить счетчик всякий раз, когда выполняется какое-то условие.


def funct(n):
   return rec_func(a,b)

def rec_func(x,y):
    global counter
    if <conditiona met>:
        counter += 1
    rec_func(m,n)
    rec_func(j,k)
    return counter

counter = 0
print funct(q)

Приведенный выше код делает то, что мне нужно. Но я не могу определить «счетчик» как глобальный из-за некоторых ограничений, при которых выполняется код. Есть ли другой способ добиться этого без глобальной переменной "counter"

ПРИМЕЧАНИЕ. В этой функции дважды вызывается рекурсивная функция. Поэтому мне нужен способ передать счет от одного к следующему.

1 Ответ

1 голос
/ 05 января 2020

Если вы не хотите, чтобы переменная «counter» была глобальной, просто сделайте ее аргументом, передаваемым параметру вашей функции. В этом коде я вызываю функцию «call_recursive», которая вызывает функцию «recursive_function». "с аргументом x = 5 и counter = 0, и функция будет вызывать себя 5 раз, а x будет уменьшаться. X остановится после того, как достигнет 0 и вернет счетчик. Надеюсь, это поможет.

def call_recursive(x):
    counter = 0
    return recursive_function(x, counter)

def recursive_function(x, counter):
    if(x != 0):
        counter += 1
        return recursive_function(x - 1, counter)
    else:
        return counter


x = 5
print(call_recursive(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...