zoukankan      html  css  js  c++  java
  • day16 递归函数 跟 二分查找

    ---恢复内容开始---

                                            人理解函数  神理解递归

     一 递归函数

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

    递归的最大深度是998

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

     我们可以用这种方式来修改递归的最大深度

    import sys
    print(sys.setrecursionlimit(100000)
    

      递归实例

    age(4) = age(3) + 2 
    age(3) = age(2) + 2
    age(2) = age(1) + 2
    age(1) = 40  吧他变成一个函数
    

      

    def age(n):
        if n==1:
            return 40
        else:
            return  age(n-1)+2
    print(age(4))
    

      二分查找算法

    首先是一个有序的列表

    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]
    def two_search(l,aim,start=0,end=None):
        end = len(l)-1 if end is None else end
        mid_index = (end - start) // 2 + start
        if end >= start:
            if aim > l[mid_index]:
                return two_search(l,aim,start=mid_index+1,end=end)
    
            elif aim < l[mid_index]:
                return two_search(l,aim,start=start,end=mid_index-1)
    
            elif aim == l[mid_index]:
                return mid_index
            else:
                return '没有此值'
        else:
            return '没有此值'
    print(two_search(l,9))
    

      

  • 相关阅读:
    归并排序
    汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
    Uncle Tom's Inherited Land
    汉诺塔III
    汉诺塔X
    Frosh Week
    hdu 1007最近点对问题
    POJ1579:Function Run Fun
    Hdu1163 Eddy's digitai Roots(九余数定理)
    放苹果问题
  • 原文地址:https://www.cnblogs.com/daien522556/p/9214523.html
Copyright © 2011-2022 走看看