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
  • 相关阅读:
    去掉苹果设备中按钮的默认样式
    用纯css写三角形
    行内元素中间出现空隙
    控制字间距
    单选按钮只能选中一个
    ie6出现双倍边距的问题
    17-比赛1 B
    ACM模板
    STL 入门 (17 暑假集训第一周)
    UVA 1594 Ducci Sequence(紫书习题5-2 简单模拟题)
  • 原文地址:https://www.cnblogs.com/liangying666/p/9214054.html
Copyright © 2011-2022 走看看