Python计算斐波那契数列用lambda方法与def实现效率哪个高?,斐波那契lambda,测试代码如下:pytho


测试代码如下:
python

import timedef fibonacci(n):    if n < 2:        return n    return fibonacci(n - 2) + fibonacci(n - 1)aaa = time.time()print fibonacci(35)print time.time() - aaaprint '--------------------------------'fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2)bbb = time.time()print fib(35)print time.time() - bbb

我本机的测试结果如下:

92274656.27800011635--------------------------------92274654.00600004196

def定义函数递归的调用会有开销,那么lambda为什么会快一些呢?

因为两个代码不等价:def的条件是 n < 2 ,而lambda的条件是 n <= 2 。

这直接导致了递归展开的时候lambda可以少展开一层,所以速度基本上是2倍的差距。

编橙之家文章,

评论关闭