所以我试着写一个递归函数,你可以输入一个三角形数字,例如5,它将返回答案15.我可以使用它来输出正确的答案:
triangle n = n * (n + 1) `div` 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)
如果你想要尾递归,就是这样。 (你最初的尝试仍然更好。)