再帰関数saikiを再帰しないnot_saikiに直したらメモリ不足で落ちました。
配列を使わなければもっといけるような気がするのですが…
どうにかなりませんか?数学には疎いので…
lang
1#saiki.rb 2def saiki a,b,c 3 if c==1 4 return a*b 5 elsif b==1 6 return a 7 else 8 return saiki a, saiki(a, b-1, c), c-1 9 end 10end 11 12def not_saiki a,b,c 13 stack = [] 14 loop do 15 if c==1 16 b *= a 17 return b if stack.empty? 18 c = stack.pop 19 elsif b==1 20 b = a 21 c = stack.pop 22 else 23 b -= 1 24 stack << c-1 25 end 26 end 27end 28 29puts not_saiki *ARGV.map{|s|s.to_i}
lang
1$ ruby saiki.rb 3 3 9
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/10 08:30