使用递归查找自然数之和的 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 语句或尾递归方法。

更新于: 2023-03-27

219 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告