2011-12-04 134 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