初识递归


递归的定义——在一个函数里再调用这个函数本身


现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归


刚刚我们就已经写了一个最简单的递归函数。


递归的最大深度——997


正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去。但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了997(只要997!你买不了吃亏,买不了上当...).


拿什么来证明这个“997理论”呢?这里我们可以做一个实验:


#初识递归

# def story():
# print('gushide neirongshi ')
# story()
# story()
#
#多大了alex,我不告诉你,alex比egon大两岁 44+2
#egon多大了,我不告诉你,egon比wusir大两岁 42+2
#wusir多大了,我不告诉你,wusir比金鑫大两岁 40+2
#金鑫40了
 def age(n):
#     if n==4:
#         return 40
#     return age(n+1)+2
# print(age(1))
# #以下是拆解的分析过程
# def age(4):
#     if 4==4:
#         return 40
#     # return age(3+1)+2  n=4 这一步不执行
# def age(3):
#     if 3==4: #3!=4这一步不执行
#         return 40
#     return age(3+1)+2  #根据age4的到age3的内容  age(3)=40+2=42
# def age(2):
#     if 2==4: #2!=4这一步不执行
#         return 40
#     return age(2+1)+2#根据age3的到age2的内容  age(2)=42+2=44
# def age(1):
#     if 1==4: #1!=4这一步不执行
#         return 40
#     return age(1+1)+2#根据age2的到age1的内容  age(1)=44+2
#最后也是开始调用了age(1)想得到到他得结果,print(age(1))
#

二分找法
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
#print(l.index(66))#最传统的放法
#初级递归
#  但是1不能显示他的索引位,
#
# def func(l,n):
#     mid=len(l)//2
#     if l:
#         if l[mid]>n:
#             new_l=l[:mid]
#             func(new_l,n)
#         elif l[mid]<n:
#             new_l=l[mid+1:]
#             func(new_l,n)
#         elif l[mid]==n:
#             print(n,mid)
#     else:
#         print('数字不在内部')
# func(l,68)
二分找法

相关文章:

  • 2022-12-23
  • 2021-10-06
  • 2021-09-07
  • 2021-04-20
  • 2021-11-14
猜你喜欢
  • 2021-11-04
  • 2021-10-27
  • 2021-08-09
  • 2018-03-20
  • 2021-06-06
  • 2021-06-16
  • 2021-12-01
相关资源
相似解决方案