我想在Haskell中使用递归.我定义:
pf:: Int -> Int
pf 1 = 1
pf n = pf 1 + sum[pf 1..pf n-1]
Run Code Online (Sandbox Code Playgroud)
但总和不正确!总结一系列功能的正确方法是什么?
[pf 1..pf (n-1)]是不一样的[pf 1, pf 2, pf 3, ..., pf (n-1)].
> let f x = 2^x
> [f 1 .. f 4]
[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
> [f 1, f 2, f 3, f 4]
[2,4,8,16]
Run Code Online (Sandbox Code Playgroud)
你可能想要map:
pf n = pf 1 + sum (map pf [1..n-1])
Run Code Online (Sandbox Code Playgroud)
而且,就像一句话,pf x = 2^(x-1).