2012-03-22 4 views
-1

私はこのエラーを取得しています:このコードでエラー:あまりにも深いスタックレベル(SystemStackError)

integerMultiplication.rb:4:in `untMul': stack level too deep (SystemStackError) 

def untMul(x, y) 
    xDigits = x.to_s.split(//).map{|chr| chr.to_i} 
    yDigits = y.to_s.split(//).map{|chr| chr.to_i} 
    n = xDigits.size 
    a = xDigits[0, xDigits.size/2] 
    b = xDigits[xDigits.size/2 ... xDigits.size] 
    c = yDigits[0, yDigits.size/2] 
    d = yDigits[yDigits.size/2 ... yDigits.size] 
    ac = untMul(a,c) 
    bd = untMul(b,d) 
    adPlusBd = untMul(a + b, c + d) - ac - bd 
    return 10**n * ac + 10**n/2 * adPlusBd + bd 
end 

untMul(12, 54) 

は、誰かが間違ってここに起こっているかを理解して助けてくださいもらえますか?私はKaratsubaの乗算を実装しようとしています。

+0

ご迷惑をおかけしましたか? –

答えて

1

無限再帰が行われています。 untMulは、スタックの空き領域がなくなるまで繰り返し呼び出します。あなたはそれが完了する前に完了するために条件ケースを設定する必要があります。

+0

ああ、ありがとう、それは意味がある... –

関連する問題