genzou #6482(2008/06/13 08:41 GMT) [ Groovy ] Rating0/0=0.00
再帰処理を避けるように作ったのですが、 30分しても処理が終わりません・・・
マシンの貧弱性のためか、 言語の問題か、 はたまたコードが原因か。
2*17ぐらいなら何とか1分程度で処理できるんですけどね。
■スペック■ CPU:Celeron 1.30GHz RAM:512MB OS:Windows XP SP2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
def start = new Date() def f( double n ){ int count = 0 while( n != 1 ){ if( n % 2 == 0){ n = n/2 } else { n = 3*n + 1 } count++ } count } def max = [n:0, fn:0] def last = 2**17 for( n in 1..last){ def fn = f(n) if( max.fn < fn ){ max.n = n max.fn = fn println "最大は f(${max.n}) = ${max.fn}" } } def end = new Date() println "時間は ${end.time - start.time}"
Rating0/0=0.00-0+
[ reply ]
genzou
#6482()
[
Groovy
]
Rating0/0=0.00
再帰処理を避けるように作ったのですが、 30分しても処理が終わりません・・・
マシンの貧弱性のためか、 言語の問題か、 はたまたコードが原因か。
2*17ぐらいなら何とか1分程度で処理できるんですけどね。
■スペック■ CPU:Celeron 1.30GHz RAM:512MB OS:Windows XP SP2
def start = new Date() def f( double n ){ int count = 0 while( n != 1 ){ if( n % 2 == 0){ n = n/2 } else { n = 3*n + 1 } count++ } count } def max = [n:0, fn:0] def last = 2**17 for( n in 1..last){ def fn = f(n) if( max.fn < fn ){ max.n = n max.fn = fn println "最大は f(${max.n}) = ${max.fn}" } } def end = new Date() println "時間は ${end.time - start.time}"Rating0/0=0.00-0+
[ reply ]