【问题标题】:Function that returns tribonnacci series up to a number返回最多一个数字的 tribonnacci 序列的函数
【发布时间】:2015-11-18 01:09:51
【问题描述】:

我正在尝试解决一个练习,该练习需要我编写一个函数,该函数将一个整数作为输入,然后返回一个 tribonacci 项列表,直到输入值为止。在大多数情况下,我一直是“成功的”,但也输出了一个额外的术语。这是我的代码:

def tribonacci(m):
    tribs = [0, 0, 1]
    if m == 0 or m == 1:
        tribs = [0, 0]
    elif m == 2:
        tribs = [0, 0, 1]
    else:
        while tribs[-1] < m:
            tribs.append(tribs[-1] + tribs[-3] + tribs[-2])
    return tribs  

我知道问题在于运行额外迭代的 while 循环,因为最后一个元素仍然不大于 m。但是,我无法立即看到如何解决此问题。我会使用 while-else 循环,但我想看看其他一些建议。

【问题讨论】:

    标签: python function while-loop logic iteration


    【解决方案1】:

    只需将即将生成的术语与m进行比较,如下所示:

    def tribonacci(m):
        tribs = [0, 0, 1]
        if m == 0 or m == 1:
            tribs = [0, 0]
        elif m == 2:
            tribs = [0, 0, 1]
        else:
            while tribs[-1] + tribs[-3] + tribs[-2] < m:
                tribs.append(tribs[-1] + tribs[-3] + tribs[-2])
    
        return tribs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2020-05-12
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      相关资源
      最近更新 更多