我如何递归写一个三角函数?

时间:2015-04-29 12:11:23

标签: haskell

所以我试着写一个递归函数,你可以输入一个三角形数字,例如5,它将返回答案15.我可以使用它来输出正确的答案:

triangle n = n * (n + 1) `div` 2

但我怎么能递归地做到这一点?

2 个答案:

答案 0 :(得分:5)

triangle 0 = 0
triangle n = n + triangle (n-1)

但为什么?

答案 1 :(得分:0)

triangle :: Integer -> Integer
triangle n = recTriangle n 0
    where
      recTriangle 0 acc = acc
      recTriangle n2 acc = recTriangle (n2-1) (acc+n2)

如果你想要尾递归,就是这样。 (你最初的尝试仍然更好。)