dict={}
def recur(n):
counter=1
original=n
while n!=1:
n = n/2 if n % 2 == 0 else 3*n+1
if n in dict:
counter=counter+dict[n]
dict[original]=counter
return counter
counter=counter+1
dict[original]=counter
return counter
for i in range(1,1000000):
recur(i)
print(max(dict.keys(), key=(lambda k: dict[k])))
Как я могу запомнить все номера, используемые в одном вызове? Например, когда я вызываю recur (13), он будет хранить только значение 13 в dict, но не значения 40,20,10,5 и т. Д., Которые используются в recur (13)Самая длинная последовательность Collatz-Memoization-Python-Iterative vs Recursive
Кроме того, я не могу для создания рекурсивной функции, которую я могу подсчитать (добавив аргумент счетчика в функцию), но затем я не могу добавить значения в словаре.
Просьба предложить способ, чтобы максимально возможные значения сохранялись в памяти, а также функция была рекурсивной?
Вы пытаетесь найти максимальные шаги для достижения 1? – thefourtheye
Да. В точку. ,,, –