python递归函数讲解_Python 递归函数详解

递归函数的概念:

直接或间接的调用自身的函数,称为递归函数。

每调用一次自身,相当于复制一份该函数,只不过参数有变化,参数的变化,就是重要的结束条件

下面是一个递归函数的实例:

#coding=utf-8

defcalc(n):print(n)if int(n/2) >0:

calc(int(n/2))else:print('------')print(n)

calc(10)

打印结果:

10

5

2

1

------

1

2

5

10

第一次接触递归函数的人,都会被它调用本身而搞得晕头转向,而且看上面的函数调用,以为得到的结果会是:

10

5

2

1

------

1

为什么以为会得出上面的结果呢?因为都把调用函数本身之后的代码给忘记了,就是else之后的python 代码。

实际此递归函数输出的是以下结果:

10

5

2

1

------

1

2

5

10

相信大家看到这里都有点蒙,我也一样,我第一次看到这个递归函数时,只能理解到第一个结果。那是因为,大部分人在做事情的时候,中断第一件事,被安排去做第二件事的时候,就会把第一件事后续的事情给忘记,如果在做第二件事的时候,又被中断,被安排去做第三件事,就会把第一件、第二件要做的后续的事情给忘记......,这就是不理解递归函数的原因。

下面我把此递归函数做了一个分解,希望能够帮到大家。

详解递归函数,当调用递归函数calc(10)时,执行过程如下:

#coding=utf-8

def calc(10):

print(10)

if int(10/2) > 0:def calc(5):

print(5)

if int(5/2) > 0:def calc(2):

print(2)

if int(2/2) > 0:def calc(1):

print(1)

print('------')

print(1)print(2)print(5)print(10)

在调用函数本身时,它之后的代码并没有结束,而是在等待条件为False 时,再接着执行之后的代码,同一个颜色的print()语句等待对应颜色的函数。

如果看到这里还不理解,那请看下面过程

#coding=utf-8

def calc(10):print(10)if int(10/2) >0:

calc(int(10/2))else:print('------')print(10)|

|vdef calc(5):print(5)if int(5/2) >0:

calc(int(5/2))else:print('------')print(5)|

|vdef calc(2):print(2)if int(2/2) >0:

calc(int(2/2))else:print('------')print(2)|

|vdef calc(1):print(1)if int(1/2) > 0: #此时条件不成立,走else

calc(int(1/2))else:print('------')print(1)

可以看到,每次条件成立都会调用函数本身,那函数本身最后是有一个print的,所以才会出现对称的那种结果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值