• python 15 days


    python 15 days

    递归函数和二分查找

    递归函数:

    自己调用自己。

    import sys
    sys.setrecursionlimit(100000)
    def func1():
        print(666)
        func1()
    func1()
    习题展示
    666
    666
    666
    666
    666
    666
    666
    666
    666
    666
    666
    666
    666
    666........
    循环到998次停止
    结果展示

    默认最大递归深度为998

    count = 0
    def func1(n):
        n += 1
        print(n)
        func1(n)
    func1(count)
    例题展示
    1
    2
    3
    4
    5
    ........
    996
    997
    998
    结果展示
    def age(n):
        if n == 1:
            return 23
        else:
            return age(n-1) + 2
    
    print(age(4)) # 23 + 2 + 2 + 2
    例题展示
    29
    结果展示

    二分查找:

    用代码写的计算方式。

    二分查找是最简单的算法,比较经典的算法。

    1,数字序列,有序,不重复。

    l = [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]
    
    print(l.index(66))
    例题展示
    17
    结果展示
    l = [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]
    count = 0
    for i in l:
        if i == 66:
            print(count)
        count += 1
    for i in range(len(l)):
        if l[i] == 47:
            print(i)
            break
    #
    else:
        print('找不到....')
    例题展示
    17
    找不到....
    结果展示

    二分查找的代码展示

    目标值:aim = 66
    寻找中间索引: min_index = len(l) // 2
    aim 与 中间索引对应的值进行比较
        aim > l[min_index]:
            l[min_index+1:]
        aim < l[min_index]:
            l[:min_index-1]
        aim == l[min_index]
            return min_index
    例题

    找例题中的索引位置:如下

    l1 = [1, 3, 5, 7, 8, 10, 11]
    def binary_search(li,aim):  # 1次:[1, 3, 5, 7, 8, 10, 11] aim 8      2次 :li = [ 8, 10, 11]  8
        mid_index = len(li) // 2  # 1次:min_index: 3    2 次:min_index 1    3次:0
    
        if aim > li[mid_index]:  # 1次:8 > 7
            return binary_search(li[mid_index+1:], aim) # [ 8, 10, 11]  8
    
        elif aim < li[mid_index]:  # 2 次:8 < 10
            return binary_search(li[:mid_index], aim)  # 3次: [8] 8
    
        elif aim == li[mid_index]:
            return mid_index
        else:
            return None
    print(binary_search(l1,8))
    例题
    0
    找到索引的值为0
    结果展示
  • 相关阅读:
    long类型和int类型的区别!!!!!
    Java-冒号的作用
    Java Scanner类
    jre安装过程
    76. 最小覆盖子串
    75. 颜色分类
    73. 矩阵置零
    72. 编辑距离
    71. 简化路径
    61. 旋转链表
  • 原文地址:https://www.cnblogs.com/juxiansheng/p/9058085.html
Copyright © 2020-2023  润新知