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

    一、递归函数

    递归函数:在一个函数里在调用这个函数本身。

    递归的最大深度:998

    def foo(n):
        print(n)
        n += 1
        foo(n)
    foo(1)

    修改默认值后
    import sys
    sys.setrecursionlimit(10000)
    def func1(n):
    n += 1
    print(n)
    func1(n)
    func1(0)
    本机可以达到866

    示例讲解

    alex老师多大了,alex比 egon 大两岁,egon比武sir大两岁,武sir比太白大两岁,
    太白18了,那alex多大?
    def age(n):
    if n == 1:
    return 18
    else:
    return age(n-1)+2
    print(age(4)) # age(3) + 2 age(2) + 2 + 2 18 + 2 + 2 + 2

    二、二分查找法

    前提,有序且唯一的数字数列
    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]
    找到66的序号
    print(l.index(66))
    sum=0
    for i in l:
    if i == 66:
    print(sum)
    break
    sum += 1
    1,aim 6
    2,aim与list的中间的数进行比较mid,aim > mid 取mid --end 中间的数与aim在进行比较
    3,aim与list的中间的数进行比较mid,aim < mid 取start --min 中间的数与aim在进行比较


    l = [2, 3, 5, 10, 15, 33, 55]
    def two_search(li, aim, start=0, end=None):
    #end=None
    end = len(li) if end is None else end
    mid_index = (end - start) // 2 + start # 3
    if start <= end:
    if li[mid_index] < aim:
    return two_search(li, aim, start=mid_index+1, end=end)
    elif li[mid_index] > aim:
    return two_search(li, aim, start=start, end=mid_index-1) #([2,3,5],3)
    elif li[mid_index] == aim:
    return mid_index
    else:
    return '没有此值'
    else:
    return '没有此值'
    print(two_search(l,100))
  • 相关阅读:
    第五次站立会议
    第四次站立会议
    第三次晚间站立总结会议
    易校小程序典型用户需求分析
    第三次站立会议
    第二次晚间站立总结会议
    第二次站立会议
    第一次晚间站立总结会议
    MyBatis注解
    延迟加载与缓存
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/8762536.html
Copyright © 2011-2022 走看看