递归函数:
如果函数包含了对其自身的调用,该函数就是递归的;
example 1:二分法查找的实现:
def find_recursion(l,aim,start=0,end=None): #end不能直接赋值len(l),因为列表l可能在函数后面定义; end=len(l) if end is None else end mid_idex = (end - start) // 2 + start if end>=start: #如果start>end,则寻找的值不存在; if l[mid_idex]>aim: return find_recursion(l,aim,start,mid_idex-1) elif l[mid_idex]<aim: return find_recursion(l, aim,mid_idex+1,end) else: return mid_idex else: print('%s不存在'%aim) l=[1,2,5,6,9,14,16,18,20,31,35,37,41,45,50,62,73,88] print(find_recursion(l,20))
example 2:阶乘实现:
def func(n): if n==1or n==0:return 1 #0!,1!是1 else:return n*func(n-1) print(func(6))