递归:就是函数在运行的过程中调用自己
- 缺点:占内存
- 优点:会让代码变简单
递归中的返回值:
- 不要看到return就认为已经返回了,要看返回操作是在递归到第几层的时候发生的,然后返回给了谁
- 如果不是返回给最外层函数,调用者就接收不到,需要再分析,看如何把结果返回回来
用递归实现阶乘:
def func(n): print(n) # 4 3 2 1 0 if n == 0: # 等于0就运算完了 return 1 return n * func(n - 1) # 每次递归相乘,n值都比之前小1 ret = func(4) print(ret) # 24
二分查找法:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def b_search(l, inp, start=0, end=None): if inp <= l[len(l)-1]: end = len(l) if end is None else end mid_index = (end - start)//2 + start if start <= end: if l[mid_index] < inp: return b_search(l, inp, start=mid_index+1, end=end) elif l[mid_index] > inp: return b_search(l, inp, start=start, end=mid_index-1) else: return mid_index else: return "这个值不存在" else: return "这个值不存在" inp = int(input("请输入一个数字:")) ret = b_search(l, inp) print(ret)