我开始使用“新”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
示例:
第一个错误代码:输入`='
时解析错误知道如何修复此算法吗? 我在haskell中读了数千个斐波那契算法,但我需要写一个新算法。
答案 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值,则与∞
相同。)然后,您就可以使用标准列表函数take
和drop
来计算fiblista a n
。