使用遞迴查詢最大公約數的Haskell程式


在 Haskell 中,我們可以使用遞迴以及遞迴情況語句來查詢最大公約數。在第一個示例中,我們將使用遞迴以及基本情況和遞迴情況,而在第二個示例中,我們將使用 (case (x, y) of) 語句。

演算法

  • 步驟 1 − 定義使用者自定義的遞迴 gcd' 函式,如下所示:

  • 例如 1 −

gcd' x y
   | y == 0    = x
   | otherwise = gcd' y (x `mod` y).
  • 例如 2 −

gcd' x y = case (x, y) of
   (x, 0) -> x
   (x, y) -> gcd' y (x `mod` y).
  • 步驟 2 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它被寫成 main = do。在 main 函式中,程式將 x 和 y 設定為要查詢最大公約數的數字,然後使用這些數字作為引數呼叫 gcd' 函式。然後將結果列印到控制檯。

  • 步驟 3 − 初始化名為“x”和“y”的變數。它將儲存要計算最大公約數的數字。

  • 步驟 4 − 函式呼叫完成後,使用 'print' 函式將結果的最大公約數值列印到控制檯。

示例 1

在這個例子中,gcd' 函式接收兩個整數 x 和 y 作為輸入,並使用遞迴來查詢它們的最大公約數。遞迴的基本情況是當 y 等於 0 時,此時最大公約數就是 x。在所有其他情況下,該函式使用引數 y 和 x 除以 y 的餘數來呼叫自身,這將計算 x 除以 y 的餘數。這將持續進行,直到餘數為 0,此時函式將返回最大公約數。

gcd' :: Int -> Int -> Int
gcd' x y
   | y == 0    = x
   | otherwise = gcd' y (x `mod` y)

main :: IO ()
main = do
   let x = 48
   let y = 18
   print (gcd' x y)

輸出

6

示例 2

在這個例子中,gcd' 函式接收兩個整數 x 和 y 作為引數。該函式使用 case 語句檢查 x 和 y 的值。如果 y 為 0,則函式返回 x 作為最大公約數。如果 y 不為 0,則該函式使用 y 和 x 除以 y 的餘數作為新引數來呼叫自身。這將持續進行,直到 y 為 0,此時函式返回 x 作為最大公約數。

gcd' :: Int -> Int -> Int
gcd' x y = case (x, y) of
   (x, 0) -> x
   (x, y) -> gcd' y (x `mod` y)

main :: IO ()
main = do
   let x = 60
   let y = 48
   print (gcd' x y)

輸出

12

結論

兩個或多個非零整數的最大公約數 (GCD) 是能同時整除這些整數的最大正整數。它也被稱為最大公因數 (GCF) 或最高公因數 (HCF)。兩個整數的最大公約數可以使用歐幾里得演算法計算,歐幾里得演算法是一種遞迴方法,也可以將其轉換為尾遞迴。多個整數的最大公約數可以透過迭代應用歐幾里得演算法來找到。最大公約數是數論中的一個重要概念,在計算機科學和數學中有著廣泛的應用。在 Haskell 中,要使用遞迴查詢數字的最大公約數,我們可以使用使用者定義的函式以及 case 語句。

更新於: 2023年3月27日

129 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.