【问题标题】:How to add an Int to a list of Int while passing the list as an argument?如何在将列表作为参数传递时将 Int 添加到 Int 列表中?
【发布时间】:2015-09-10 14:09:57
【问题描述】:

我想生成一个包含前 n 个斐波那契数列的列表。 我有 3 个功能:

  • fib2:生成第n个数
  • fib:调用 fib2 列出 这些数字
  • 斐波那契:只存在所以你不必通过它 每次都是空列表

我的问题很简单,但我就是想不通。 线

fib n m = fib (n-1) m : (fib2 n)

不起作用,尤其是“m : (fib2 n)”部分。我想计算第 n 个斐波那契数(使用 fib2 n)并将其添加到我的斐波那契数 m 列表中。我以为“:”会在列表中添加一个新元素,但不知何故我用错了。

下面是整个代码

fib2 :: Int -> Int
fib2 0 = 1
fib2 1 = 1
fib2 n = fib2 (n - 1) + fib2 (n - 2)

fib :: Int -> [Int] -> [Int]
fib 0 m = m
fib n m = fib (n-1) m : (fib2 n)

fibonacci :: Int -> [Int]
fibonacci n = fib n []

【问题讨论】:

  • 请注意,您的方法非常低效。在网站上搜索“haskell fibonacci”以查看更有效的方法。
  • 谢谢,我知道了。但正如你可能从我相对愚蠢的问题中看出的那样,我刚刚开始使用 Haskell。这不是最好的方法,只是尝试该语言的一些“功能”。

标签: list haskell fibonacci


【解决方案1】:

好吧,我发现我是个白痴。我必须切换“:”函数的参数

fib n m = fib (n-1) (fib2 n : m)

一切都很好。

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 2010-09-20
    • 2018-12-26
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多