zoukankan      html  css  js  c++  java
  • 递归函数


    递归函数:

    递归函数,在一个函数内调用自己,最大递归层数做了一个限制:997
    sys模块:所有和Pythonx相关的设置和方法

    sys.setrecursionlimit(1000000)
    n=888880
    def f():
        global n
        n+=1
        print(n)
        f()
    f()
    更改递归层数

    结束递归的标志:return
    二分查找算法     
    递归结局的问题:
    就是通过参数,来控制每一次调用缩小计算的规模
    适合的场景:
    数据的规模在减小,但是解决问题的思路没有改变

    l=[1,2,3,5,6,7,8,12,34,45,54,56,63,73,78,80,83,90]
    def find(l,min):
        mid=len(l)//2
        if mid > min:
            new_l=l[:mid]
            return find(new_l)
        elif mid < min:
            new_l=l[mid+1:]
            return find(new_l)
        else:
            return min
    
    print(len(l),)
    简单二分法
    l=[1,2,3,5,6,7,8,12,34,45,54,56,63,73,78,80,83,90]
    def func(l, aim,start = 0,end = len(l)-1 ):
        mid = (start+end)//2
        if not l[start:end+1]:
            return
        elif aim > l[mid]:
            return func(l,aim,mid+1,end)
        elif aim < l[mid]:
            return func(l,aim,start,mid-1)
        elif aim == l[mid]:
            print("bingo")
            return mid
    
    index = func(l,68)
    print(index)
    升级二分法
  • 相关阅读:
    NOIP 2016 回文日期
    USACO Ski Course Design
    USACO Combination Lock
    USACO 利润Profits
    POJ 3368 Frequent values
    USACO Balanced Lineup
    JDOJ 1065 打倒苏联修正主义
    JDOJ 2174 忠诚
    VIJOS-P1514 天才的记忆
    VIJOS-P1423 最佳路线
  • 原文地址:https://www.cnblogs.com/yifugui/p/7263715.html
Copyright © 2011-2022 走看看