欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-04 12:22:50
什么是递归函数? 简单来说就是在一个函数中重复的调用自己本身的函数 递归函数在调用的时候会不断的开内存的空间直到程序结束或递归到一个次数时会报错 计算可递归次数: 在这里我们修改我们可递归的次数: 如果还想递归更多的次数,就必须要提升计算机的性能了 递归函数的优点就是能让一个问题变得简单,但缺点就是 ......

什么是递归函数?

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

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

计算可递归次数:

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