python3之递归的使用

it2025-06-15  13

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')
最新回复(0)