python - 递归的算斐波那契数列,为什么用lambda实现会比用def实现效率高?
伊谢尔伦
伊谢尔伦 2017-04-17 11:13:06
0
1
421

测试代码如下:
python

import time

def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n - 2) + fibonacci(n - 1)
aaa = time.time()
print fibonacci(35)
print time.time() - aaa

print '--------------------------------'

fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2)
bbb = time.time()
print fib(35)
print time.time() - bbb

我本机的测试结果如下:

9227465
6.27800011635
--------------------------------
9227465
4.00600004196

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(1)
左手右手慢动作

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

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!