首页 > 解决方案 > 斐波那契数列递归法

问题描述

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))

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

标签: pythonfibonacci

解决方案


一种实现fib方法是作为递归 lambda 函数,通过遵循其数学定义,然后您可以创建一个包装函数,该函数列出从x到的斐波那契数列y。(例如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]

推荐阅读