2011-10-27 22 views
1

我該如何實現某事。像haskell中的sigma標誌?西格瑪登錄haskell

http://img6.imagebanana.com/img/dulfkvz8/form.png

編輯:

我想計算,這是我不想代表希臘字母。我想計算總和。

在此先感謝

+0

你想利用希臘字母在你的程序的源代碼,或者你想總結一些東西? – delnan

+0

不是希臘字母,我想總結一下。 – user28061

+1

如果你正在尋找的不是真正的西格瑪字符,我會建議你不要在標題中使用「sign」這個詞。 – MatrixFrog

回答

10

假設你有一個(非emtpy)列表xs = [x1, x2, ... xn]x值,你可以把它寫成

sum $ zipWith fn xs (tail xs) 
+0

對於這個特定的問題,這可能是要走的路。 – 2011-10-27 21:22:39

+0

對我來說這看起來非常先進。也許有更基本的方式來實現這一點? – user28061

+3

它可能比你想象的要先進。函數'zipWith'有三個參數:第一個參數是一個函數('fn'),第二個和第三個參數是列表。如果你檢查在線文檔,你會看到'zipWith'使用函數參數將兩個列表中的元素配對,並將結果作爲列表(長度與較短的輸入列表一樣長)返回。 – comingstorm

-3

爲什麼不是一個簡單的遞歸函數?

sigma 0 fn = fn 
sigma i fn = fn + (sigma (i-1) fn) 
+5

請注意,這種方法(天真的遞歸)對於更長的序列具有相當可怕的行爲。另外,這個特殊的實現只是'nn = 0'的'fn *(i + 1)'和'i <0'的一個無限循環(你必須使'fn'成爲'i'的函數。實際上在每一步調用它)。 – delnan

+1

如果是家庭作業,天真的遞歸可以成爲一種方式。 – nponeccop