使用库函数查找数字幂的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.