day17:递归、二分查找法

递归:就是函数在运行的过程中调用自己

递归的缺点:占内存
递归的优点:会让代码变简单

递归中的返回值:
不要只看到return就认为已经返回了,要看返回操作是在递归到第几层的时候发生的,然后返回给了谁
如果不是返回给最外层函数,调用者就接收不到,需要再分析,看如何把结果返回回来

def factorial(n):
    print(n)
    if n == 0:  #等于0就运算完了
        return 1
    return n * factorial(n - 1)  #每次递归相乘,n值都比之前小1
res = factorial(4)
print(res)
用递归实现阶乘
def b_search(l, aim, start=0, end=None):
    if aim <= 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] < aim:
                return b_search(l,  aim, start=mid_index+1, end=end)
            elif l[mid_index] > aim:
                return  b_search(l, aim, start=start, end=mid_index-1)
            else:
                return mid_index
        else:
            return "这个值不存在"
    else:
        return "这个值不存在"
res = b_search(lis, 66)
print(res)
二分查找法(查找66)

猜你喜欢

转载自www.cnblogs.com/believepd/p/9610397.html