递归(Python3)
# 递归:在函数中自己调用自己
# 递归超过最大深度报错:RecursionError: maximum recursion depth exceeded while calling a Python object
# sys.setrecursionlimit(100000) 可修改递归深度,默认996次(一般不修改,需要超过1000次递归才能解决的问题就不适合用递归)
# 递归的好处:代码简洁 递归的缺点:占内存(调用一次函数就开一个空间,一直调用一直开空间,导致占内存)
# 只要写递归函数就必须有结束条件
实例1:
# 斐波那契:后面的数等于前面两个数的和,从1,1开始
def feibo(n):
if n>2:
return feibo(n-1)+feibo(n-2)
elif n==1 or n==2:
return 1
实例2:
#阶乘
def jiec(n):
if n !=1:
return n*jiec(n-1)
else:
return 1
实例3:
# 二分查找法:针对有序序列,先取中间值进行比大小,小则再取左边的序列的中间值进行对比,大则再取右边序列的中间值进行对比
def binarySearch(list1,num):
mid = len(list1)//2
if num > list1[mid]:
return mid + binarySearch(list1[mid:],num)
elif 0< num <list1[mid]:
return binarySearch(list1[0:mid],num)
elif num == list1[mid]:
return mid
else:
print('cant find')

浙公网安备 33010602011771号