繁体   English   中英

斐波那契数列递归方法

[英]Fibonacci sequence recursive method

def fib(x, y, length, fibNum=None):
        if fibNum == None:
           fibNum = []
        while length > 0:
          z = x+y
          x = y
          y = z
          fibNum.append(z)
          length = length-1
          fib(x, y, length, fibNum=fibNum)

print(fib(0,1,10))

如果我打印它,我会得到结果 = 无。 有谁知道,错误是什么?

实现fib一种方法是作为递归 lambda 函数,通过遵循其数学定义,然后您可以创建一个包装函数,该函数生成从xy的斐波那契数列的列表。 (例如, x = 0, y = 10列出前10斐波那契数列)。 最后,可以打印此函数的结果。

fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2)

此 lambda 等效于以下fib函数:

def fib(n):
    if n <= 1: 
        return n
    else: 
        return fib(n-1) + fib(n-2)

def fib_wrapper(x, y):
    return [fib(i) for i in range(x, y)]

print(fib_wrapper(0, 10))

输出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

正如评论所说,你没有返回任何东西。 如果你只想要 Fibounachis ,那么试试这个:

def fib(k):
    fib    = []
    if k == 1:
        fib.append(1)
    elif k == 2:
        fib.append(1)
        fib.append(1)
    elif k == 3:
        fib.append(1)
        fib.append(1)
        fib.append(2)
    else:
        fib.append(1)
        fib.append(1)
        fib.append(2)
        while(fib[-1] <= k):
            fib.append(fib[-1] + fib[-2])
    return fib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM