python函数(递归函数,二分查找算法)


递归函数

递归函数:在函数中调用自身的函数

def story():
    print('从前有座山')
    story()
    print(111)

story()

 

递归函数的最大递归深度默认是997/998——是python从内存角度出发做的限制

RecursionError: maximum recursion depth exceeded while calling a Python object
递归的错误,超过了递归的最大深度

如果设置了递归的最大递归深度:

import sys
sys.setrecursionlimit(1000000)
n = 0
def story():
    global n
    n += 1
    print(n)
    story()
story()

会显示最后电脑能达到的最大深度 (一般是3222)

 

如果递归次数太多,就不适合使用递归来解决问题

递归的缺点:占内存

递归的优点:会让代码变得简单

 二分查找

排序 :
最短路径

我们学习的算法 都是过去时
了解基础的算法 才能创造出更好的算法
不是所有的事情都能套用现成的方法解决的
有些时候会用到学过的算法知识来解决新的问题

二分查找算法 必须处理有序的列表

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 find(l,aim,start = 0,end = None):           #
    end = len(l) if end is None else end        #让下面传上来的元素个数不改变初始的元素个数
    mid_index = (end - start)//2 + start        #
    if start <= end:
        if l[mid_index] < aim:
            return find(l,aim,start =mid_index+1,end=end)
        elif l[mid_index] > aim:
            return find(l, aim, start=start, end=mid_index-1)
        else:
            return mid_index
    else:
        return '找不到这个值'


ret= find(l,44)
print(ret)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM