zoukankan      html  css  js  c++  java
  • 递归函数和二分查找算法

    递归函数

    在一个函数里又调用这个函数本身。

    递归的最大深度:998

      原因:递归函数如果不受外力的阻止会一直执行下去,每一次函数调用都会产生一个属于他自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,Python为了杜绝此类现象,强制的将递归层数控制在了997。

    我们可以通过一些手段修改这个默认值:

    import sys
    sys.setrecursionlimit(1000)

    递归示例:

    利用递归循环求100以内的数的和:

    def func(n):
        if n == 1:
            return 1
        else:
            return func(n-1)+n
    
    print(func(100))

    二分查找算法

    代码:

    #二分查找
    l1 = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
    
    #简单版
    def two_find(l,aim):
        mid = (len(l)-1) // 2
        if l:
    
            # print(mid)
            if aim > l[mid]:
                two_find(l[mid+1:],aim)
            elif aim < l[mid]:
                two_find(l[:mid],aim)
            elif aim == l[mid]:
                print(mid)
        else:
            print('没找到')
    two_find(l1,39)
    
    #上面的方法因为索引一直在变,所以查不到确定的索引
    #升级版
    def two_find(l,aim,start=0,end=None):
        end = len(l) if end == None else end
        mid = (end - start)//2 + start
        if end >= start:
            if aim > l[mid]:
                two_find(l, aim, start=mid + 1, end=end)
            elif aim < l[mid]:
                two_find(l, aim, start=start, end=mid - 1)
            elif aim == l[mid]:
                print('找到了,%s' % mid)
        else:
            print('没找到')
    View Code
  • 相关阅读:
    linux weblogic的sh文件
    linux 安装weblogic(转载)
    linux 安装jdk
    linux 用户和用户组
    测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?
    postman强大的团队协作功能
    requests(一): 发送一个json格式的post请求
    python操作Excel模块openpyxl
    appium环境安装app自动化
    夜神模拟器怎么连接adb
  • 原文地址:https://www.cnblogs.com/liangying666/p/9214054.html
Copyright © 2011-2022 走看看