使用遞迴查詢最大公約數的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 語句。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP