Python 递归调用与二分法
递归调用与二分法
1、递归调用
递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身.
示例:
def age(n):
    if n == 1:
        return 18   # 结束条件
    return age(n-1)+2   # 调用函数本身
print(age(5))
打印结果
26
递归的执行分为两个阶段:
1 递推
2 回溯
示例图
递归特性:
1、必须有一个明确的结束条件
2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3、递归效率不高,因为每次调用自身时,都会在内存中创建一个新的内存空间,当不断循环调用非常多次时,是非常耗内存的。
2、二分法
主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法。
例如查找一个数字,查找了打印 ‘find it’ 没有查到打印 ‘not exists’
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
l = [1,2,5,7,10,31,44,47,56,99,102,130,240]
def binary_search(l,num):
    print(l)
    if len(l) == 1:
        if l[0] == num:
            print('find it')
        else:
            print('not exists')
        return
    mid_index=len(l)//2
    mid_value=l[mid_index]
    if num == mid_value:
        print('find it')
        return
    if num > mid_value:
        l=l[mid_index:]
    if num < mid_value:
        l=l[:mid_index]
    binary_search(l,num)
binary_search(l,31)
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16764030.html
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号