python3之递归的使用

python3之递归的使用

递归关键字:过程函数自调用,递归出口,代码简洁,效率低,递归次数与栈溢出。

一、递归的定义
递归,简而言之就是指在函数或者过程的定义中使用函数或者自身的方法。
二、递归的特点
1)递归就是方法里调用自身。   
2)在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。    
3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
三、递归的应用场景
1、经典的斐波那契数列:
def fun(arg1,arg2,stop):
if arg1 == 0:
    print(arg1,arg2)
arg3 = arg1 + arg2
print(arg1,arg2,arg3)
if arg3 < stop:      #判断套件不满足时退出递归
    fun(arg2,arg3,stop)   #递归函数,传送参数arg2,arg3,stop给arg1,arg2,stop

2、递归切片,查找数据:
def twosplit(sourceDate,findData):
sp = int(len(sourceDate)/2)  #序列长度
if sourceDate[0] == findData:
    print('找到数据:',sourceDate[0])
    return 0
else:
    if findData in sourceDate[:sp]: #判断在左边
        print('数据在左边[%s]' %sourceDate[:sp])
        twosplit(sourceDate[:sp],findData)  #递归函数
    elif findData in sourceDate[sp:]: #判断在右边
        print('数据在右边[%s]' %sourceDate[sp:])
        twosplit(sourceDate[sp:], findData)
    else:
        print('找不到数据')
if __name__ == '__main__':
    data = [1,2,'c',3,4,5,6,7,8,17,26,15,14,13,12,11,'a','b']
    #data = list(range(1000000))
    twosplit(data,'c')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值