递归函数
1、函数的递归
如何一个函数在内部调用自己本身,这个函数就叫做递归函数
递归函数:
def calc(n): n = int(n/2) print(n) if n > 0: calc(n) print(n) calc(10)
打印的结果为 5 2 1 0 0 1 2 5
为什么会出现这种情况呢?
因为每次函数在进入下一层的时候,当前层的函数并没有结束,当函数进行到最后一层的时候,发现没有下一层,就会向下继续运行,所以会逐级的一步步往外退层,所以就会出现0、1、2、5
2、练习:用递归实现2分查找的算法,以从列表 a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107] 查找指定的值。
a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107] def dichotomy(start,end,n,a_li): ''' 使用递归函数,进行二分法查找 :param start: int :param end: int :param n: int :param a_li: list[int] :return: ''' center = (start + end) // 2 if n > a_li[center]: return dichotomy(center+1,end,n,a_li) elif n < a_li[center]: return dichotomy(start,center,n,a_li) elif n == a_li[center]: return center,a_li[center] print(dichotomy(0,len(a),22,a))