Я сделал код, который измеряет количество шагов, необходимых для возврата к 1 в Collatz Гипотеза. Вот мой кодСброс счетчика Collatz на каждой новой рекурсии
counter = 0
def collatz(n):
global counter
counter += 1
if n <= 0 :
return "Invalid Number"
elif n == 1 :
return counter
elif n % 2 == 1 :
n = 3*n + 1
return collatz(n)
elif n % 2 == 0 :
n = n/2
return collatz(n)
print(collatz(9921615699))
print(collatz(9921615699))
Я ожидаю, что последняя две команды печати для печати 311 и 311. Вместо этого они печатают 311 и 622. Я думаю, что было достаточно легко увидеть в коде, что является неправильным. Как я могу это исправить? как можно сбрасывать счетчик каждый раз, когда команда завершается, а не когда функция запускается.
Это подействовало. Благодаря! Собираюсь отмечать как An ASAP –