使用遞迴計算冪的Haskell程式
在 Haskell 中,我們可以使用遞迴以及各種情況來計算冪,也可以使用尾遞迴。在第一個示例中,我們將使用遞迴以及基本情況(power _ 0 = 1)和遞迴情況(power x y = x * power x (y-1))。在第二個示例中,我們將使用遞迴情況(power' x y | y == 0 = 1| otherwise = x * power' x (y-1)),在第三個示例中,我們將使用尾遞迴。
演算法
步驟 1 − 定義使用者自定義的遞迴冪函式,例如:
示例 1 −
power _ 0 = 1 power x y = x * power x (y-1).
示例 2 −
power' x y | y == 0 = 1 | otherwise = x * power' x (y-1).
示例 3 −
power x y = power' x y 1 where power' x y acc | y == 0 = acc | otherwise = power' x (y-1) (acc*x).
步驟 2 − 程式執行將從主函式開始。main() 函式控制整個程式。它寫成 main = do。在 main 函式中,程式將 x 設定為 2,y 設定為 5,然後使用這些值作為引數呼叫 power 函式。
步驟 3 − 初始化名為“x”和“y”的變數。它們分別儲存底數和指數值。
步驟 4 − 函式呼叫完成後,使用‘print’函式將結果冪列印到控制檯。
示例 1
在這個示例中,定義了一個名為 power 的函式,它接收兩個整數 x 和 y 作為引數。該函式使用遞迴來計算 x 的 y 次冪。當 y 為 0 時為基本情況,在這種情況下,函式返回 1。
power :: Integer -> Integer -> Integer power _ 0 = 1 power x y = x * power x (y-1) main :: IO () main = do let x = 2 let y = 5 print (power x y)
輸出
32
示例 2
這是 Haskell 中遞迴函式的一個簡單實現,它使用遞迴計算數字的冪。該函式接收兩個引數 x 和 y,並計算 x 的 y 次冪。當 y 等於 0 時為基本情況,在這種情況下,函式返回 1。在遞迴情況下,該函式將 x 與使用引數 x 和 y-1 呼叫函式的結果相乘,有效地將 x 提高到 y 的冪。
power' :: Integer -> Integer -> Integer power' x y | y == 0 = 1 | otherwise = x * power' x (y-1) main :: IO () main = do let x = 2 let y = 5 print (power' x y)
輸出
32
示例 3
在這個示例中,實現了用於計算數字冪的尾遞迴方法。該函式接收兩個引數 x 和 y,其中 x 是底數,y 是指數。它定義了一個內部函式 power',該函式接收三個引數 x、y 和 acc,其中 acc 用於儲存中間結果。該函式檢查 y 是否等於 0,如果是,則返回 acc,它是最終結果。如果 y 不等於 0,則使用 y 減 1 和 acc 乘以 x 自我呼叫。
power :: Integer -> Integer -> Integer power x y = power' x y 1 where power' x y acc | y == 0 = acc | otherwise = power' x (y-1) (acc*x) main :: IO () main = do let x = 2 let y = 5 print (power x y)
輸出
32
結論
在 Haskell 中,可以使用遞迴以及各種情況來計算冪。此外,還可以使用尾遞迴來計算。