zoukankan      html  css  js  c++  java
  • 递归函数

    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
  • 相关阅读:
    linux环境变量
    linux make configure make
    摘自(http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html)
    linux eaccelerator
    linux du df ls
    linux phpize
    mysql 分页
    mysql 执行计划和慢日志记录
    mysql 添加/删除列(column)
    mysql 索引
  • 原文地址:https://www.cnblogs.com/zrxu/p/11578189.html
Copyright © 2011-2022 走看看