【问题标题】:Fibonacci haskell斐波那契哈斯克尔
【发布时间】:2012-01-12 12:45:13
【问题描述】:

我开始使用“新”斐波那契算法,但它不起作用。很简单:

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

【问题讨论】:

  • 你能解释一下你的方法吗?这里有太多的语法和类型错误,我无法理解你的意思。

标签: haskell functional-programming fibonacci


【解决方案1】:

你的缩进是错误的。试试:

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 是斐波那契数列,以 ath 斐波那契数开头,以 (n-1 结尾)th 斐波那契数。

这是一个列表问题。

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

【讨论】:

  • 感谢回答,a 表示第 a 个斐波那契数,n 是最后一个斐波那契数,函数应该返回一个包含 n 个斐波那契数的列表。不是功课,只是用我自己的方式学习haskell。我之前的问题是一个家庭作业问题,这不是。
  • 最后一个斐波那契数是什么意思? fiblista 的输出如何依赖于a?请准确描述您的函数应在一般输入上返回什么。
  • @deszhtop 如果我理解你的图表,你想要fiblista 4 5 = [3]fiblista 3 5 = [2,3]fiblista 2 5 = [0,1,1,2,3]。为什么不fiblista 2 5 = [1,2,3]
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2015-06-05
  • 2014-05-23
  • 2013-08-09
  • 2011-11-27
  • 2013-03-31
  • 2014-05-03
相关资源
最近更新 更多