首页 > 代码库 > Day5_递归_二分法

Day5_递归_二分法

递归调用:

在调用一个函数的过程中,直接或间接的调用函数本身。

def func():

  print(‘from func‘)

 

间接调用:

def foo():

  print(‘form foo‘)

  bar()

def bar():

  print(‘form foo‘)

  foo()

递归都是有次数限制的。

 

问5个人年龄,第五个比第四个大2岁,以此类推,第一个18岁。

def age(n):
    if n ==1:
        return 18
    return age(n-1)+2

print(age(5))

递归的执行分为两个过程:

  递推和回溯。

 

循环取出列表中的所有元素:

l=[1,2[3,4[5,6[7,8[9,10]]]]]

def search(l):
    for item in l:
        if type(item) is list:
            search(item)
        else:
            print(item)

search()

  

 

二分法:

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:
        mid_index=len(l)//2
        if num > l[mid_index]:
            l=l[mid_index:]
            binary_search(l,num)
        elif num < [mid_index]:
            l=l[:mid_index]
            binary_search(l,num)
        else:
            print(‘find it‘)
    else:
        if l[0] == num:
            print(‘find it ‘)
        else:
            print(‘not exist‘)
            return

 

Day5_递归_二分法