eye*_*erg 1 haskell functional-programming list-comprehension fibonacci
我该怎么做?这是我演讲幻灯片中练习的一部分,提示是使用库函数tail :: [a] -> [a]和zip :: [a] -> [b] -> [(a,b)].此外,功能的类型是fibs :: [Integer]
我知道列表理解是如何工作的,如何编写一个递归的Fibonacci函数,它接受一个值并且熟悉tail和zip函数 - 但是,我只是无法弄清楚这一个并且无法找到一个在线示例.任何人都可以告诉我它是如何完成的吗?
出于好奇,Haskell中使用的函数如何(产生无限列表)?如果我fibs在ghci命令提示符下写(函数名),例如它是否会继续打印列表中的元素,直到时间结束?
在此先感谢您的帮助.
这是一个提示.
采取两个权力的序列.
p2 = [1, 2, 4, 8, 16 ...
Run Code Online (Sandbox Code Playgroud)
zip 它本身
zip p2 p2 = [(1,1), (2,2), (4,4), ...]
Run Code Online (Sandbox Code Playgroud)
对列表中的每一对求和(这可以使用列表推导来完成)
[2, 4, 8, ...
Run Code Online (Sandbox Code Playgroud)
前置1:
[1, 2, 4, 8, ...
Run Code Online (Sandbox Code Playgroud)
所以我们p2再次获得了这份名单.如果你在Haskell中表达了所有这些,你最终得到了一些表单代码
p2 = 1 : ... something involving p2 ...
Run Code Online (Sandbox Code Playgroud)
这是一个产生两个权力的工作程序.
一旦你开始工作,你可以稍微改变它并获得斐波纳契.
最后一点:是的,打印p2将打印整个无限序列.您可以使用打印几个元素
take 10 p2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |