为什么Python中的递归很慢?

为什么Python中的递归很慢?

我在使用递归时在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语句导致了这个循环速度的差异?

更多尼泊尔内容

阿迪达斯贝壳头夏天穿热吗 贝壳头夏天可以穿吗
365体育亚洲官方登录

阿迪达斯贝壳头夏天穿热吗 贝壳头夏天可以穿吗

🗓️ 07-29 👁️ 8762
国家地理标志
38365365.com打不开

国家地理标志

🗓️ 08-21 👁️ 5949
在线更改音乐速度
38365365.com打不开

在线更改音乐速度

🗓️ 08-19 👁️ 4455
天邪鬼赤哪里多 跑跑车
38365365.com打不开

天邪鬼赤哪里多 跑跑车

🗓️ 08-11 👁️ 5468
电脑主机的有几个零件组成呢?9个零件,分别是CPU、CPU散热器、主板、内存(又叫内存条)、显卡、硬盘、风扇、电源、机箱。他们的作用是什么呢?他们之间的联系是什么呢?是如何配合工作的呢?
新刀第一次用怎么开刃
38365365.com打不开

新刀第一次用怎么开刃

🗓️ 08-10 👁️ 1070
以拼搏为桨 驶向成功的彼岸
38365365.com打不开

以拼搏为桨 驶向成功的彼岸

🗓️ 08-23 👁️ 9456
微信撤回的消息怎么查看?查看微信撤回消息,2个方法!
统御岗哨圣骑士
38365365.com打不开

统御岗哨圣骑士

🗓️ 09-11 👁️ 1949