【问题标题】:Constructing the Fibonacci sequence in Haskell [duplicate]在 Haskell 中构建斐波那契数列
【发布时间】:2017-01-23 19:33:36
【问题描述】:

我是一个完整的 Haskell 初学者,刚刚遇到以下构造斐波那契数列的简洁表达式:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

我想我了解每个单独的部分在做什么(:zipWithtail),并且我知道某种递归正在发生,但不太确定如何发生。

【问题讨论】:

    标签: haskell recursion fibonacci


    【解决方案1】:

    前两个值是 0 和 1。此后,通过添加当前和前一个系列,并移动一个位置来附加(压缩)元素。

    例如,如果“当前”列表是 (0, 1, 1, 2, 3, 5),那么尾部是 (1, 1, 2, 3, 5)。添加这些给我们...

    fibs = (0, 1, 1, 2, 3, 5)
    tail = (1, 1, 2, 3, 5)
    sum  = (1, 2, 3, 5, 8)
    

    这给了我们表达式

    0: 1: (1, 2, 3, 5, 8)
    

    ... 这导致列表的单元素扩展。当我们无限循环时,我们得到了斐波那契数列。

    【讨论】:

    • 我对递归的工作原理更感兴趣,但这已在链接问题的答案中进行了解释。
    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 2017-12-06
    • 2015-01-06
    • 1970-01-01
    • 2021-11-27
    • 2015-06-05
    相关资源
    最近更新 更多