zoukankan      html  css  js  c++  java
  • 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
    结果展示
  • 相关阅读:
    Linux-线程同步(day14续)
    Linux之线程(day14)
    Linux-网络编程-UDP网络编程(day13续2)
    ES6 模块加载
    let与var声明区别
    vue 常用指令v-if v-else v-show v-for
    动态路由的意义,以及路由重定向
    前端路由的理解
    socpe 与 包的引入
    VUE 组件注册(全局、局部)
  • 原文地址:https://www.cnblogs.com/juxiansheng/p/9058085.html
Copyright © 2011-2022 走看看