- 147 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:07:29 ]
- >>143
とても正しいです… def collatz(n): r=[] while n>1: r.append(n) n = 3*n+1 if n%2 else n/2 yield r >>> collatz(13) <generator object at 0x02637788> >>> [x for x in collatz(13)] [[13, 40, 20, 10, 5, 16, 8, 4, 2]] def collatz(n): r=[] while n>1: r.append(n) n = 3*n+1 if n%2 else n/2 yield r >>> [x for x in collatz(13)] [[13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2], [13, 40, 20, 10, 5, 16, 8, 4, 2]] なんか動作がわからない。なんで完成したリストが13回返されるかな… 計算結果を格納した暫定結果リストを返してくれれば便利そげだけど
|

|