使用递归查找自然数之和的 Haskell 程序
在 Haskell 中,我们使用递归和尾递归来查找自然数之和。在第一个示例中,我们将使用递归以及基本情况和递归情况;在第二个示例中,我们将使用 sumNat 函数;在第三个示例中,我们将使用用户定义的尾递归函数。
算法
步骤 1 − 定义用户自定义的递归函数 sumOfNaturalNumbers,
适用于示例 1、2 和 3
sumOfNaturalNumbers 0 = 0 sumOfNaturalNumbers n = n + sumOfNaturalNumbers (n - 1).
适用于示例 4
sumNat' 0 acc = acc sumNat' n acc = sumNat' (n-1) (n + acc).
步骤 2 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它被写成 main = do。在 main 函数中,n 的值设置为 10 并传递给 sumOfNaturalNumbers 函数,该函数返回从 1 到 10 的自然数之和。
步骤 3 − 初始化名为“n”的变量。它将保存要打印总和的数字。
步骤 4 − 调用函数后,使用“print”函数将结果总和打印到控制台。
示例 1
在这个示例中,我们将了解如何使用递归查找自然数之和。这可以通过使用用户自定义的递归函数来完成。
sumOfNaturalNumbers :: Integer -> Integer sumOfNaturalNumbers 0 = 0 sumOfNaturalNumbers n = n + sumOfNaturalNumbers (n - 1) main :: IO () main = do let n = 10 print (sumOfNaturalNumbers n)
输出
55
示例 2
在这个示例中,我们将了解如何使用递归查找自然数之和。这可以通过使用用户自定义的递归 sumNat 函数来完成。
sumNat :: Integer -> Integer sumNat 0 = 0 sumNat n = n + sumNat (n-1) main :: IO () main = do let num = 5 print (sumNat num)
输出
15
示例 3
在这个示例中,我们将了解如何使用递归情况查找自然数之和。它使用一个名为“sum'”的函数,该函数以一个整数作为参数。该函数使用一个递归情况,其中基本情况是当输入整数为 0 时,在这种情况下,该函数返回 0。在另一种情况下,当输入整数大于 0 时,该函数将输入整数添加到递归调用该函数的结果中,并将输入整数减 1。
sum' :: Integer -> Integer sum' n | n == 0 = 0 | n > 0 = n + sum' (n-1) main :: IO () main = do let num = 5 print (sum' num)
输出
15
示例 4
在这个示例中,我们将了解如何使用递归查找自然数之和。这可以通过使用尾递归函数来完成。
sumNat' :: Integer -> Integer -> Integer sumNat' 0 acc = acc sumNat' n acc = sumNat' (n-1) (n + acc) main :: IO () main = do let num = 10 print (sumNat' num 0)
输出
55
结论
在 Haskell 中,要使用递归查找自然数之和,我们可以使用用户自定义函数、case 语句或尾递归方法。
广告