Fibonacci haskell

时间:2011-12-04 08:15:01

标签: haskell functional-programming fibonacci

我开始使用“新”Fibonacci算法,但它不起作用。这很简单:

    --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中读了数千个斐波那契算法,但我需要写一个新算法。

1 个答案:

答案 0 :(得分: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数列表,从 a th Fibonacci数开始,以( n )结束-1) th Fibonacci数。

这是一个列表问题。

Imagine you had a list of all the Fibonacci numbers。 (如果fiblista 0 ∞是有效的Haskell值,则与相同。)然后,您就可以使用标准列表函数takedrop来计算fiblista a n