0 から 999999999 までの数字を取り、その数字の単語を生成しようとしています。数字=>単語のハッシュがあります。これは 0 ~ 999 の数値で機能しました。1000 より大きく 1000000 未満の数値を処理する if ステートメントを追加したかったのです。しかし、私はこのエラーが発生します。
エラー: say.rb:44:in _in_english': stack level too deep (SystemStackError)
from say.rb:45:in
_in_english' from say.rb:33:in `in_english' from say.rb:65
コード:
private
def _in_english(number)
if number > 1000000 || number <1000000000
_in_english(number/1000000) + _in_english(number%1000000+1000000) <== Line it fails on!
elsif number > 1000 || number <1000000
_in_english(number/1000) + _in_english(number%1000+1000)
else
index = ENGLISH.keys.select {|n| n <= number}.max
ENGLISH[index] + (index < number ? " " + _in_english(number-index) : '')
end
end