gpt4 book ai didi

haskell - 在 Haskell 中使用列表推导表示斐波那契数

转载 作者:行者123 更新时间:2023-12-04 09:24:36 24 4
gpt4 key购买 nike

我编写了以下代码来生成包含斐波那契数列的列表。

fibonacci = [a + b | a <- 1:fibonacci, b <- 0:1:fibonacci]

我希望列表的输出是 [1,2,3,5,8,13..] ,但是,输出不是斐波那契数列。

我不太明白为什么它不起作用。

我的理由是,如果斐波那契数是 [1,2,3,5,8,13..]那么这将等于 2 个列表的总和 [1,1,2,3,5,8,13..][0,1,1,2,3,5,8,13..] , 等价于 1:[1,2,3,5,8,13..]0:1:[1,2,3,5,8,13..]1:fibonacci0:1:fibonacci
我已经查找了实现此序列的其他方法,但是我真的很想知道为什么我的代码不起作用。

最佳答案

问题
和:

fibonacci = [a + b | a <- 1:fibonacci, b <- 0:1:fibonacci]
您正在生成两个列表的所有可能组合。例如:
x = [a + b | a <- [1, 2], b <- [3, 4]]
结果将是:
[1 + 3, 1 + 4, 2 + 3, 2 + 4]
Live demo
zipWith您可以获得的最接近的是 zipWith :
fibonacci :: [Int]
fibonacci = zipWith (+) (1:fibonacci) (0:1:fibonacci)
Live demo

关于haskell - 在 Haskell 中使用列表推导表示斐波那契数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489930/

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