递归函数

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))
View Code

 

posted @ 2019-09-24 14:38  虚xu  阅读(193)  评论(0编辑  收藏  举报