zoukankan      html  css  js  c++  java
  • Python-----递归函数,二分查找

    递归函数
    :自己调用自己
    import sys
    sys.setrecursionlimit(10000)
    def func1():
    print(666)
    func1()
    func1()

    默认最大递归深度998
    import sys
    sys.setrecursionlimit(10000)
    count=0
    def func1(n):
    n+=1
    print(n)
    func1(n)
    func1(count)


    '''
    n = 1 太白 age(1) = 23
    n = 2 日天 age(2) = age(1) + 2
    n = 3 wusir age(3) = age(2) + 2
    n = 4 alex age(4) = age(3) + 2

    '''
    def age(n):
    if n==1:
    return 23
    else:
    return age(n-1)+2
    print(age(4)) #23+2+2+2
    以下内容是递归函数的具体运行
    def age(n): #n=4
    if n==1:
    return 23
    else:
    return age(n-1)+2
    ret=age(4)
    '''
    def age(n): # n=3
    if n==1:
    return 23
    else:
    return age(1)+2

    def age(n): #n=2
    if n==1:
    return 23
    else:
    return age(1)+2

    def age(): #$4$$$$
    if n==1:
    return 23
    else:
    return age(1)+2
    '''

    二分查找:
    用代码写的计算方式。
    二分查找是最简单的算法,比较经典的算法。
    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(len(l))
    print(l.index(66))
    count=0
    for i in l:
    if i ==66:
    print(count)
    count+=1
    for i in range(len(l)):
    if l[i]==66:
    print(i)
    break
    else:
    print('找不到')

    目标值: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(l1,aim):
    mid_index=len(l1)//2
    if aim >l1[mid_index]:
    return binary_search(l1[mid_index+1:],aim)
    elif aim<l1[mid_index]:
    return binary_search(l1[:mid_index],aim)
    elif aim==l1[mid_index]:
    return mid_index
    else:
    return None

    print(binary_search(l1,5))

    li = [1, 3, 5, 7, 8, 10, 11]
    def func(li,aim):
    mid_index=len(li)//2
    if aim>li[mid_index]:
    return func(li[mid_index+1:],aim)
    elif aim<li[mid_index]:
    return func(li[:mid_index], aim)
    elif aim==li[mid_index]:
    return mid_index
    else:
    return None
    print(func(li,10))

    li = [1, 3, 5, 7, 8, 10, 11]
    def binary_search(li,aim,start=0,end=None): #$$$$$$$$
    end=len(li)-1 if end is None else end
    mid_index=(end-start)//2+start
    if start<=end:


    if aim >li[mid_index]:
    return binary_search(li,aim,start=mid_index+1,end=end)
    elif aim<li[mid_index]:
    return binary_search(li,aim,start=start,end=mid_index)
    elif aim==li[mid_index]:
    return mid_index
    else:
    return None
    else:
    return None
    print(binary_search(li,17))



  • 相关阅读:
    CSS箭头
    rails 路由正则表达式
    centos6.7 配置MongoDB日志
    centos6.7 配置Elasticsearch
    拼音纠错
    Pandas学习笔记
    WebService using Spring throwed org.xml.sax.SAXException: Bad envelope tag: htm
    怎样让Windows任务管理器CPU占用率呈现正玄曲线(解释+C#实现)
    Deepin Linux获得关注,国产GUI值得提倡
    Swing组件的另类嵌套
  • 原文地址:https://www.cnblogs.com/weilaixiaochaoren/p/9063161.html
Copyright © 2011-2022 走看看