In [1]:
from __future__ import division
cache = {}
def collatz(N):
try:
steps = cache[N]
except:
if N==1:
steps = 1
elif N%2 == 0:
steps = 1+collatz(N/2)
else:
steps = 1+collatz(3*N + 1)
cache[N] = steps
return steps
max_starting = 0
for N in range(1,1000000):
col = collatz(N)
if col > max_starting:
max_starting = col
start_number = N
In [2]:
start_number
Out[2]:
In [2]: