gpt4 book ai didi

haskell - 不使用 zipWith 的斐波那契数

转载 作者:行者123 更新时间:2023-12-03 15:39:50 26 4
gpt4 key购买 nike

我一直在尝试在不使用惰性 zipwith 的情况下实现从 0 到 n 的斐波那契数列列表方法。到目前为止,我所拥有的是从 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 数字的另一种方法是使用辅助函数,然后使用它自己的函数来生成无限的 fib 数字列表,或者您可以使用 take 10 fibs 并且输出将是前 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..])

关于haskell - 不使用 zipWith 的斐波那契数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66180076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com