08/06/17 11:47:29
>>148
def collatz(n):
while n > 1:
yield n
n = n % 2 and 3*n + 1 or n/2
>>> f = collatz(13)
>>> f.next()
13
>>> f.next()
40
>>> [x for x in f]
[20, 10, 5, 16, 8, 4, 2]
return [リスト]
っぽいけど操作すると要素が消費されてくのね…
部分リストを、返せば計算過程が
[[13],[13,40],[13,40,20],[13,40,20,10],…]
>>> t_colltz(13)
13
13 -> 40
13 -> 40 -> 20
13 -> 40 -> 20 -> 10
…
便利?