我在使用递归时在idle中进行了一些尝试,注意到使用递归的循环比普通的while循环慢得多,我想知道是否有人知道原因。以下是我所做的测试:
>>> import timeit
>>> setu="""def test(x):
x=x-1
if x==0:
return x
else:
test(x)
"""
>>> setu2="""
x=10
while x>0:
x=x-1
"""
>>> timeit.timeit(stmt="test(10)",setup=setu,number=100)
0.0006629826315997432
>>> timeit.timeit(stmt=setu2,number=100)
0.0002488750590750044
>>> setu="""def test(x):
x=x-1
if x==0:
return x
test(x)
"""
>>> timeit.timeit(stmt="test(10)",setup=setu,number=100)
0.0006419437090698921
然而在最后一次测试中,我注意到如果我去掉了else
语句,速度略有提升,所以我在想是不是if语句导致了这个循环速度的差异?