我一直在尝试实现一个从0到n的斐波那契数列列表,而不使用惰性zipwith
方法。目前我所拥有的代码可以返回从n
到1的列表。有没有办法修改这段代码,使其能够返回从0-n
的列表呢?
示例:
fib_seq 4 = [3,2,1,1]
-- output wanted: [1,1,2,3]
如果没有办法实现我想要代码实现的功能,是否有一种方法只返回斐波那契数列的列表,输入一个数字比如说4,它应该返回
[0, 1, 1, 2]
。fib_seq :: Int -> [Int]
fib_seq 0 = [0]
fib_seq 1 = [1]
fib_seq n = sum (take 2 (fib_seq (n-1))) : fib_seq (n-1)
fib_seq2 n = let { fs = fib_seq2 (n-1) } in sum (take 2 fs) : fs
。比较fib_seq 30
的速度。 - Will Ness