当前位置: 移动技术网 > IT编程>脚本编程>Python > Python学习日记(十三) 递归函数和二分查找算法

Python学习日记(十三) 递归函数和二分查找算法

2019年08月21日  | 移动技术网IT编程  | 我要评论

赛尔号普利,八千里路,洗牌教学

什么是递归函数?

简单来说就是在一个函数中重复的调用自己本身的函数

递归函数在调用的时候会不断的开内存的空间直到程序结束或递归到一个次数时会报错

计算可递归次数:

i = 0
def func():
    global i
    print('i = {}'.format(i))
    i += 1
    return func()
func()            #.....i = 994 i = 995 recursionerror: maximum recursion depth exceeded while calling a python object

在这里我们修改我们可递归的次数:

import sys
sys.setrecursionlimit(1000000)
i = 0
def func():
    global i
    print('i = {}'.format(i))
    i += 1
    return func()
func()      #...i = 3924 i = 3925

如果还想递归更多的次数,就必须要提升计算机的性能了

递归函数的优点就是能让一个问题变得简单,但缺点就是太占用内存,因此递归函数不适合解决需要大规模递归运算的问题

 

二分查找算法:

这个被查询的列表必须是一个有序的列表

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 '找不到这个元素!'
print(find([5,6,8,9,10,17,18,19,20],8)) #2

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网