作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Fibonacci Numbers in Haskell
(2 个回答)
9年前关闭。
我需要帮助我使用 haskell 进行分配,它返回一个列表,直到斐波那契数列中的第 n 个数字。
像
Main> fib 5
[0,1,1,2,3,5]
Main> fib 15
[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610]
fib::Int->Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
最佳答案
有一些很酷的方法可以做到这一点,首先是最简单的
fib::Int->Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
fibList n = map fib [1..n]
fib::Int->[Int]
fib 0 = [0]
fib 1 = [1, 0]
fib n = (head (fib (n-1)) + head (fib (n-2))) : fib (n-1)
fib n = take n fiblist
where fiblist = 0:1:(zipWith (+) fiblist (tail fiblist))
fiblist
是斐波那契数列的无限列表。我们所做的只是捕获适当的数量。这是可能的,因为 Haskell 是“懒惰的”。如果你是 Haskell 的新手,只需微笑和点头。
fib = flip take . fix $ \f -> 0 : 1 : (zipWith (+) f (tail f))
关于haskell - haskell中的斐波那契序列返回所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013273/
我是一名优秀的程序员,十分优秀!