如何在将列表作为参数传递时将 Int 添加到 Int 列表?
How to add an Int to a list of Int while passing the list as an argument?
我想生成前 n 个斐波那契数列。
我有 3 个功能:
- fib2: 生成第 n 个数
- fib: 调用 fib2 列出
这些数字
- fibonacci: 只存在所以你不必通过它
每次都是空列表
我的问题很简单,但我就是想不通。
该行
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 []
好吧,我发现我是个白痴。我必须切换“:”函数的参数
fib n m = fib (n-1) (fib2 n : m)
一切都很好。
我想生成前 n 个斐波那契数列。 我有 3 个功能:
- fib2: 生成第 n 个数
- fib: 调用 fib2 列出 这些数字
- fibonacci: 只存在所以你不必通过它 每次都是空列表
我的问题很简单,但我就是想不通。 该行
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 []
好吧,我发现我是个白痴。我必须切换“:”函数的参数
fib n m = fib (n-1) (fib2 n : m)
一切都很好。