2014-01-07 45 views
-1

我在Haskell中有一個函數,它有兩個參數,我想計算這個函數的總和。在Haskell中加上兩個參數

module Main where 

fact 0 = 1 
fact n = n * fact (n - 1) 

combination n p = fact n/fact (n - p) 

combSum p = combination p p/foldr1 (\p-> \x -> combination p x) [p,(p-1)..0] 

prob p = combination p p/combSum p 

這似乎沒有工作。 combSum函數。我怎麼寫這個功能?

只是修正功能...對不起...

x必須從對變化爲0

+0

'\ X - > p'→'\ X - > \ p'? – Ryan

+0

對不起......我認爲我犯了一個錯誤... – ortolanph

+0

'\ p - > \ x - >組合p x'相當於'combination'。我認爲問題可能是'[p,(p-1).. 0]';嘗試combSum p =組合p p/foldr1(翻轉組合)[0..p]'。 – Ryan

回答

0

首先,

combination p p 

是同樣的事情:

fact p 

接下來,我不完全確定你的combSum是幹什麼的。尤其是分母。 foldr採取功能,初始值,和一個列表。我沒有看到你的初始值。你只是想總結一系列的價值觀?像

fact 0 = 1 
fact n = n * fact (n - 1) 
combination n p = fact n/fact (n - p) 
combSum p = sum $ map (\x -> combination p x) [p, p-1 .. 0] 
prob p = fact p/combSum p 

不知道這是你想要的...

+0

'foldr'具有初始值。 'foldr1'沒有。參見:http://hackage.haskell.org/package/base-4.6.0.1/docs/Prelude.html#v:foldr1 –

+0

另外一個組合被定義爲'組合np = permutations np \'div'' fact p' 。置換被定義爲'permutations n p = fact n''div'fact(n - p)'。請不要混合它們。 –

+0

我的壞關於foldr1! – ssm

相關問題