【发布时间】: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。这不是最好的方法,只是尝试该语言的一些“功能”。