Haskell初學者在這里!我正在解決一個練習問題,我正在嘗試使用模式匹配概念制作手動 gcd 函式到目前為止,我嘗試了以下操作:
myGcdPM :: Int -> Int -> Int
myGcdPM x 0 = x
myGcdPM x y = myGcdPM y (mod x y)
該代碼似乎有效,但我試圖了解這是否是正確的 PM 和有效的解決方案?
uj5u.com熱心網友回復:
如果您查找標準實作的來源(如果您不知道在哪里找到它:問 Hoogle),您會發現它與您的幾乎相同:
gcd x y = gcd' (abs x) (abs y)
where gcd' a 0 = a
gcd' a b = gcd' b (a `rem` b)
好吧,興趣的定義真的是gcd':
gcd' a 0 = a
gcd' a b = gcd' b (a `rem` b)
與您的唯一區別是它使用rem而不是mod(但在正輸入上,它們的行為相同)并且它以中綴表示法(與 相同)撰寫a `rem` b它rem a b。
然后,gcd x y = gcd' (abs x) (abs y)只包裝整個事物,確保輸入是非負的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/434785.html
下一篇:如何證明函式空間不為空?
