最新免费视频:www.pythonav.com (冒着被砍死的风险)

递归函数

递归函数:

在一个函数内调用自己

最大递归层数做了一个限制(只要997,欢乐带回家)

修改参数: import sys(#所有和python相关的设置和方法)

但是尽量别瞎修改

 

结束递归的标志:   return

# def threeLM(menu):
# for key in menu :
# print(key)
#
# k = input('>>>')
# if k in menu:
# threeLM(menu[k])
#
# threeLM(menu)

 

 

二分查找算法:  就是一种计算的方法

1. 一个数除到不能被2整除为止

def cal(num):

  if num %2 == 0:   #先判断是否能被二整除

    num = num //2     #除2 取整

    return cal(num)   #    继续扔进去除

  else :

    return num 

print(cal(10))

 

 

 

 

2.      l = [1,2,3,4,7,11,23,65,89,107,654,7675,9782]

基础版:

def find(l,aim):     

  mid = len(l)//2  #取整

  if l[mid] >aim:

    new_l = l[ :mid ]

    return find(new_l,aim)

 

  elif l[mid]<aim :

    new_l = l[mid+1 :]

    return find(new_l,aim)

 

  else :

    return l[mid]

print(find(l,7675))

 

进阶版:

def func(l,aim,start = 0,end = len(l)-1):

  mid = (start+end )//2

  if not l[start:end+1]:

    return 

  elif aim > l[mid]:

    return func(l,aim,mid+1,end)

  elif aim < l[mid]:

    return func(l,aim,start,mid-1)

  elif aim == l[mid]:

    print('bingo')

    return mid

 

index = func(l,98)

 

 

递归解决的问题:

就是通过参数来控制每一次调用,缩小计算的规模

适合的场景:

就是数据的规模在减小,但是解决问题的思路没有发生改变

 

结束递归的标志:

return

posted @ 2017-07-31 20:35  uuuuuuu  阅读(134)  评论(0编辑  收藏  举报

最新免费视频:www.pythonav.com (冒着被砍死的风险)