【发布时间】:2021-03-01 10:40:33
【问题描述】:
所以,我看到有人用reduce方法来计算斐波那契数列。 这是他的想法: (1,0) , (1,1) , (2,1) , (3,2) , (5,3) 对应于 1、1、2、3、5、8、13、21.......
代码看起来像这样
def fib_reduce(n):
initial =(1,0)
dummy = range(n)
fib_n = reduce(lambda prev ,b : (prev[0] + prev[1], prev[0]),
dummy,
initial)
return fib_n[0]
我理解(prev[0] + prev[1] , prev[0]) 就像
a, b = b, b + a。
但是,我不明白这个b 代表什么?
有人可以解释一下b吗?
【问题讨论】:
-
我在这里看不到任何递归。
-
请注意,这不是递归算法。虽然
reduce可以递归实现,但在Python 中它实际上是一个for循环(pure Python implementation,C implementation)。
标签: python recursion lambda reduce