擅长:python、mysql、java
<p>你正在以一种奇怪的方式混合递归和循环。问题是<code>while True:</code>。因为你永远不会从循环中返回任何东西,所以没有什么能阻止它永远继续下去。你的代码达到1,然后继续增加长度。这是一个固定的版本。你知道吗</p>
<pre><code>def odd_collatz ( n ):
return (3 * n) + 1
def even_collatz ( n ):
return int(n / 2)
def collatz_counter ( initialNumber, initialLength ):
length = initialLength
if initialNumber == 1:
return length
elif initialNumber != 1:
length += 1
if initialNumber % 2 == 0:
return collatz_counter(even_collatz(initialNumber), length)
else:
return collatz_counter(odd_collatz(initialNumber), length)
print(collatz_counter(13, 1))
</code></pre>