使用庫函式查詢數字冪的Haskell程式


本教程將幫助我們使用庫函式查詢數字的冪。基數和指數作為引數傳遞,用於查詢傳遞的基數的指數冪。最終輸出將顯示。

例如,對於基數 = 2;指數 = 3,它將返回 8。

語法

power x y = product (replicate (fromInteger y) x)

Product 函式計算列表中所有元素的乘積

power x y = foldl (*) 1 (replicate (fromInteger y) x)

Foldl 將第一個元素與列表以及第二個引數一起,將函式應用於它們,然後它將結果和第二個引數饋送到函式,並繼續到最後一個元素。

power x y = foldr (*) 1 (replicate (fromInteger y) x)

Foldr 函式將獲取第二個引數和列表中的最後一個元素以應用函式,然後它將獲取倒數第二個元素並給出結果,並繼續到最後一個元素。

演算法

  • 步驟 1 - 定義冪函式

  • 步驟 2 - 程式執行將從主函式開始。main() 函式控制整個程式。

  • 步驟 3 - 初始化名為“base”和“exponent”的變數。它將包含基數和指數的值。

  • 步驟 4 - 使用 'putStrLn' 語句顯示最終結果值。

使用 Product 函式和列表

在本例中,使用 replicate 函式建立 x 重複 y 次的列表,並使用 product 計算該列表中元素的乘積,即 x 的 y 次冪。

示例 1

power :: Integer -> Integer -> Integer
power x y = product (replicate (fromInteger y) x)

main :: IO()
main = do
   let base = 5
   let exponent = 3
   let result = power base exponent
   putStrLn ("Result: " ++ show result)

輸出

Result: 125

使用 foldl 函式

在本例中,foldl 函式用於對 replicate 建立的列表的每個元素執行操作並累積結果。

示例 2

power :: Integer -> Integer -> Integer
power x y = foldl (*) 1 (replicate (fromInteger y) x)

main :: IO()
main = do
   let base = 5
   let exponent = 3
   let result = power base exponent
   putStrLn ("Result: " ++ show result)

輸出

Result: 125

使用庫函式和 foldr 函式

在本例中,foldr 函式用於對 replicate 建立的列表的每個元素執行操作,並以相反的順序累積結果。

示例 3

power :: Integer -> Integer -> Integer
power x y = foldr (*) 1 (replicate (fromInteger y) x)

main :: IO()
main = do
   let base = 5
   let exponent = 3
   let result = power base exponent
   putStrLn ("Result: " ++ show result)

輸出

Result: 125

使用冪函式

在本例中,透過呼叫 power x y 來使用該函式,其中 x 是基數,y 是指數。例如,power 2 3 將返回 8。

示例 4:

power :: Integer -> Integer -> Integer
power x 0 = 1
power x y = x * power x (y-1)

main :: IO()
main = do
   let base = 5
   let exponent = 3
   let result = power base exponent
   putStrLn ("Result: " ++ show result)

輸出

Result: 125

結論

在 Haskell 中,有各種方法可以在不使用庫函式的情況下找到數字的冪。這可以透過使用 product 函式和列表、使用 foldl、foldr 函式甚至冪函式來實現。

更新於:2023-03-01

192 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.