2011-12-04 133 views
1

我開始一個「新」斐波那契算法,但它不工作。這很簡單:斐波那契haskell

--fiblista 0 n = [0] 
    --fiblista 1 n = [1] 
    fiblista a n 
     | a <= n = (0:1:tail, ((fiblista!!d)+(fiblista!!c))) fiblista a+1 n 
     where d = a - 1 
       c = a - 2 

例子:

http://dl.dropbox.com/u/27560194/example.png

第一個錯誤代碼:輸入解析錯誤'=」

任何想法如何解決這一問題的算法? 我讀了haskell中的示例斐波那契算法,但我需要寫一個新的。

+0

你可以試着解釋一下你的方法嗎?這裏有太多的語法和類型錯誤,我無法看到你的工作意味着什麼。 – hammar

回答

4

您的縮進是錯誤的。試試:

fiblista 0 n = [0] 
fiblista 1 n = [1] 
fiblista a n 
    | a < n = (tail, ((fiblista!!d)+(fiblista!!c))) fiblista a+1 n 
    where d = a - 1 
     c = a - 2 

但是這段代碼仍然不會編譯。 fiblista是一個帶有兩個參數的函數,但您也嘗試將它用作列表。你也嘗試使用一個元組作爲函數。

如果你仍然堅持寫你的函數,這將有助於如果你能描述fiblista的參數是什麼,它應該返回什麼。包含一個類型簽名。

這功課嗎?


所以,

fiblista a n是斐波那契數的列表,從所述一個 Fibonacci數,並與(Ñ -1) Fibonacci數結束。

這是一個列表問題。

Imagine you had a list of all the Fibonacci numbers。 (如果是一個有效的Haskell值,這將與fiblista 0 ∞相同。)然後,您將能夠使用標準列表函數takedrop來計算fiblista a n

+0

感謝這個答案,a表示第a個斐波那契數,n表示最後一個斐波那契數,函數應該返回一個包含n斐波那契數的列表。沒有家庭作業只是用我自己的方式學習haskell。我之前的問題是一個家庭作業問題,但事實並非如此。 – flatronka

+1

你是什麼意思的「最後」斐波納契數字?輸出'fiblista'如何依賴'a'?請描述你的函數應該精確地返回一般輸入。 – Prateek

+0

例如:http://dl.dropbox.com/u/27560194/example.png我的想法。 – flatronka