2016-05-04 6 views
1

私はHaskellの中に2つの正の整数の最大公約数を計算したい:ハスケル最大公約数エラー?

myGCD :: Integer -> Integer -> Integer 
myGCD a b 
     | b == 0  = abs a 
     | otherwise = myGCD b (b `mod` a) 

これはかなり単純なアルゴリズムでなければなりません。しかし、私はいくつかの非常に奇妙な結果を得ていることがわかります。私はちょうど上記のロジックでエラーを見つけるように見えることはできません。最も顕著な共通因子であるabの計算に影響することは明らかです。

答えて

3

あなたはほぼ正しいです!あなたはmyGCDへの電話をかけました。正しいコードは次のようになります。

 
myGCD :: Integer -> Integer -> Integer 
myGCD a b 
     | b == 0  = abs a 
     | otherwise = myGCD b (a `mod` b) 

あなたにいくつかのファンキーな結果が得られますa、その最後の行のbの順序を逆に!

関連する問題