haskell中的递归函数?

raz*_*han 0 recursion haskell

我正在尝试学习Haskell,并正在研究递归函数的书籍问题.

> If   X_1 = 1 then X_2 = 1 + X_1 = 2, X_3 = 1 + X_1 + X_2
      or when it is 5,  X_5 = 1 + X_4 + X_3 + X_2 + X_1 = 16, and so forth. 
Run Code Online (Sandbox Code Playgroud)

我尝试在haskell上这样做:

test :: Int -> Int
test 1 = 1
test n = sum[test n .. test (n-1)]
Run Code Online (Sandbox Code Playgroud)

但输出总是1.我认为我必须首先做一个函数保护然后总结它但我不知道如何用递归行为来做.

luq*_*qui 5

一个好的起点是列表推导:

[ test i | i <- [1..5] ]
Run Code Online (Sandbox Code Playgroud)

手段

[ test 1, test 2, test 3, test 4, test 5 ]
Run Code Online (Sandbox Code Playgroud)

看看你现在能否解决它.

别忘了加1!