2016-05-04 7 views
1

Ich mag den größten gemeinsamen Teiler von zwei positiven ganzen Zahlen in Haskell berechnen:Haskell größten gemeinsamen Teilerfehler?

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

Dies sollte ein ziemlich einfacher Algorithmus sein. Ich finde jedoch, dass ich sehr seltsame Ergebnisse bekomme. Ich kann einfach keinen Fehler in der obigen Logik finden. Alles offensichtliche herausstechen, das die Berechnung der größten gemeinsamen Teiler von a und b beeinflussen würde?

Antwort

3

Sie haben fast recht! Sie haben einen Anruf an myGCD getätigt. Das sollte richtigen Code lesen:

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

Umkehrung der Reihenfolge der a und b in der letzten Zeile, die Sie geben einige flippige Ergebnisse!

Verwandte Themen