Haskell程序计算N以内所有奇数的和
本教程将帮助我们计算N以内所有奇数的和。Haskell使用函数式编程范式,这意味着它使用函数来转换数据,而不是使用循环和变量来跟踪状态变化。在Haskell中,计算N以内所有奇数的和有不同的方法。
方法1:使用列表推导
在这种方法中,函数sumOddNumbers使用列表推导生成一个包含N以内所有奇数的列表,然后使用sum函数计算列表中数字的和。最终结果显示给用户。
算法
步骤1 − 初始化一个名为“n”的变量,它将保存要打印N以内所有奇数和的值。
步骤2 − 使用列表推导定义函数sumOddNumbers,如下所示:sumOddNumbers n = sum [x | x <- [1,3..n], x `mod` 2 /= 0]。
步骤3 − 程序执行将从main函数开始。main()函数控制整个程序。它被写成main = do。
步骤4 − 初始化一个名为“sum”的变量。一旦调用sumOddNumbers函数,它将保存N以内所有奇数的和。
步骤5 − 显示最终结果。
示例
在这个示例中,我们将学习如何计算N以内所有奇数的和。
main :: IO ()
main = do
let n = 10
let sum = sumOddNumbers n
putStrLn ("Sum of all odd numbers up to " ++ show n ++ " is: " ++ show sum)
sumOddNumbers :: Int -> Int
sumOddNumbers n = sum [x | x <- [1,3..n], x `mod` 2 /= 0]
输出
Sum of all odd numbers up to 10 is: 25
方法2:使用递归
在这种方法中,函数sumOddNumbers使用递归来计算和。当输入为1时为基本情况,在这种情况下,函数返回1。
算法
步骤1 − 初始化一个名为“n”的变量,它将保存要打印N以内所有奇数和的值。
步骤2 − 使用递归定义函数sumOddNumbers,其中基本情况是当输入为1时,函数返回1。对于其他情况,函数检查输入是偶数还是奇数。如果输入为偶数,则递归调用自身并将输入递减1。如果输入为奇数,则将输入添加到递归调用结果中,并将输入递减2。
步骤3 − 程序执行将从main函数开始。main()函数控制整个程序。它被写成main = do。
步骤4 − 初始化一个名为“sum”的变量。一旦调用sumOddNumbers函数,它将保存N以内所有奇数的和。
步骤5 − 显示最终结果。
示例
在以下示例中,我们将计算N以内所有奇数的和。
main :: IO ()
main = do
let n = 10
let sum = sumOddNumbers n
putStrLn ("Sum of all odd numbers up to " ++ show n ++ " is: " ++ show sum)
sumOddNumbers :: Int -> Int
sumOddNumbers 1 = 1
sumOddNumbers n | n `mod` 2 == 0 = sumOddNumbers (n-1)
| otherwise = n + sumOddNumbers (n-2)
输出
Sum of all odd numbers up to 10 is: 25
方法3:使用foldl函数
此方法对N以内所有奇数的列表使用fold函数,该列表使用列表推导生成。fold函数采用一个二元运算符(在本例中为+)和一个初始累加器值(0),并将运算符应用于列表的元素和累加器,以此方式给出所有奇数的和。
算法
步骤1 − 初始化一个名为“n”的变量,它将保存要打印N以内所有奇数和的值。
步骤2 − 使用foldl函数定义函数sumOddNumbers,定义如下:sumOddNumbers n = foldl (+) 0 [x | x <- [1,3..n], x `mod` 2 /= 0]。
步骤3 − 程序执行将从main函数开始。main()函数控制整个程序。它被写成main = do。
步骤4 − 初始化一个名为“sum”的变量。一旦调用sumOddNumbers函数,它将保存N以内所有奇数的和。
步骤5 − 显示结果。
示例
在这个示例中,我们将使用foldl函数计算N以内所有奇数的和。
main :: IO ()
main = do
let n = 10
let sum = sumOddNumbers n
putStrLn ("Sum of all odd numbers up to " ++ show n ++ " is: " ++ show sum)
sumOddNumbers :: Int -> Int
sumOddNumbers n = foldl (+) 0 [x | x <- [1,3..n], x `mod` 2 /= 0]
输出
Sum of all odd numbers up to 10 is: 25
结论
计算N以内所有奇数的和有不同的方法。在Haskell中,可以使用列表推导、使用foldl函数或使用递归来计算N以内所有奇数的和。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP