python - 斐波那契数列递归法
问题描述
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 函数,通过遵循其数学定义,然后您可以创建一个包装函数,该函数列出从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]
推荐阅读
- grid - 可编辑网格控件和状态原因字段
- python-3.x - 如何将回调绑定到 Tkinter 调整大小事件而不会被多次调用?
- typescript - 带有项目引用的打字稿构建失败,“输出文件尚未从源文件构建”,即使它是构建的
- html - 为什么要将导航栏链接嵌入到列表中,然后再嵌入到导航栏中?
- datatable - 如何在 gnuplot 中生成三列数据文件
- r - 如何用真正的 NA 值替换此值
- reactjs - Axios Post 方法授权不起作用 - React
- python - 当我尝试运行我的烧瓶/python 应用程序时,它给了我错误:A secret key is required to use CSRF
- javascript - 带有来自外部 URL 的 JSON 数据的自动完成字段(Steam API)
- python - 确保可以由多个线程填充的 python 队列将始终被清除而无需轮询