haskell - Haskell 中的基本求和

标签 haskell recursion

我正在练习 Haskell,并编写一个求和函数,它接受两个数字(上限和下限)并进行求和。

即,summation 0 10将返回 55

我可以让它大部分工作,但无法弄清楚如何仅使用两个参数来获取它。

这是我到目前为止所拥有的:

summation :: Integer -> Integer -> Integer -> Integer
summation x y sum =
    if (y<x) then
        sum
    else
        summation x (y-1) (sum+y)

所以这很好用,但我需要做 summation 0 10 0使其正常工作。我不确定如何在 Haskell 中仅使用两个参数来实现此目的。

最佳答案

你把它包起来。

summation :: Integer -> Integer -> Integer
summation x y = summation' x y 0

summation' :: Integer -> Integer -> Integer -> Integer
summation' x y sum =
    if (y<x) then
        sum
    else
        summation' x (y-1) (sum+y)

关于haskell - Haskell 中的基本求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5386406/

相关文章:

c - 为什么 malloc() 和普通数组声明分配的堆栈帧大小不同?

recursion - 生成递归和结构递归有什么区别?

haskell - 如何使用 Scotty 设置 wai-handler-devel 以自动重新加载代码?

haskell - 在 Haskell 中使用 Dynamic/fromDynamic 时是否可以恢复约束?

function - 为什么 Haskell 的 `fst` 和 `snd` 有这么短(奇怪)的名字?

javascript - JavaScript 中的递归异步函数

java - 这种递归回溯解决方案如何解决算术表达式?

haskell - Haskell 中的零填充右移?

testing - 组织 Haskell 测试

java - 调试递归方法来查找单词是否存在于滑板中