我有一个递归函数sumdown :: Int - > Int,它将所有自然数的总和从其参数返回到零,例如,sumdown 3应该返回总和3 + 2 + 1 + 0 = 6.
sumdown :: Int -> Int
sumdown 0 = 0
sumdown x = x + sumdown(x-1)
Run Code Online (Sandbox Code Playgroud)
我也有这个我不完全理解的定义,有人可以请我为此评估一下,并告诉我为什么它可能比上面的定义更有效?
sumdown n = sumd n 0
sumd 0 a = a
sumd n a = sumd (n-1) (n+a)
Run Code Online (Sandbox Code Playgroud)
谢谢.