gpt4 book ai didi

Haskell Fibonacci 达到最大指定数?

转载 作者:行者123 更新时间:2023-12-05 08:25:05 26 4
gpt4 key购买 nike

我有一个已启动并正在运行的 Haskell 函数,但它做错了事。

它应该输出一个斐波那契数列直到指定的最大数。

像这样:

fibonacciSequence 86
1 1 2 3 5 8 13 21 33 54

我的代码目前正在输出斐波那契数列中的前 10 个数字,而不是从 1 到 10 的斐波那契数列。

它输出 1 1 2 3 5 8 13 21 33 54,但它应该是 1,1,2,3,5,8。

fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n - 2)

---print (fib n)
fibList n = map fib[1..n]

main =
do
putStrLn "The fibonacci series from 1 to n is:"
print (fibList 10)

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

一种更有效的方法是生成一个(无限的)斐波那契数列:

fibs :: [Integer]
fibs = 0 : 1 : <strong>zipWith (+) fibs (tail fibs)</strong>

然后我们可以从列表中的一个大于 10 的那一刻开始停止列表 takeWhile :: (a -> Bool) -> [a] -> [a] :

<strong>takeWhile</strong> (<= 10) fibs

这样效率更高,因为我们不需要为每个斐波那契数从零开始。此外,它在 O(k) 时间内构建了第 k 个项目。

关于Haskell Fibonacci 达到最大指定数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68615413/

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