我一直在尝试实现从 0 到 n 的斐波那契数列列表,而不使用惰性zipwith https://hackage.haskell.org/package/base-4.14.1.0/docs/Prelude.html#v:zipWith方法。到目前为止我所拥有的是返回列表的代码n
到 1. 有什么方法可以更改此代码,使其从 0- 返回列表n
at all?
Example:
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 数字的另一种方法是使用辅助函数,然后使用它自己的函数来生成无限的 fib 数字列表,或者您可以使用 take 10 个 fib,其输出将是前 10 个谎言数字。我的函数绝对不是使用 zipWith 函数无限计算出 fib 数的最快方法,但您在这里没有使用它,所以这是我在不使用 zipWith 的情况下实现它的方法。
例如take 10 fibs
会返回:[0,1,1,2,3,5,8,13,21,34]
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
fibs :: [Int]
fibs = (map fib [0..])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)