当前位置: 首页 > news >正文

北京网站设计 培训搜狗搜索网页版

北京网站设计 培训,搜狗搜索网页版,做博客网站要什么技术,桂林人论坛爆料初识递归 递归的定义——在一个函数里再调用这个函数本身 现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归。 刚刚我们就已经写了一个最简单的递归函数。 递归的最大深度——997…
 

初识递归

 

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

 

现在我们已经大概知道刚刚讲的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)
二分找法
 
def func(l,n,start=0,end=None):#第一个问题,传参,这样传参数,就不会对函数进行切割,if end==None:#而是去下标范围内的数值,l 不变end=len(l)-1if start < end:  #当函数不存在时会出现func(l,n,mid+1,end)中的mid+1>endmid=(start+end)//2# 因为取到所有的值了,此时end=0if l[mid]>n:func(l,n,start,mid)#这个是取的区间,而为改变列表elif l[mid]<n:func(l,n,mid+1,end)elif l[mid]==n:print(n,mid)else:print('数字不在内部')
func(l,67,start=0,end=None)
二分查找终极版
 

 


三级菜单
menu = {'北京': {'海淀': {'五道口': {'soho': {},'网易': {},'google': {}},'中关村': {'爱奇艺': {},'汽车之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龙观': {},},'朝阳': {},'东城': {},},'上海': {'闵行': {"人民广场": {'炸鸡店': {}}},'闸北': {'火车战': {'携程': {}}},'浦东': {},},'山东': {},
}
def o_menu(menu):while True:for key in menu:print(key)select=input('选择')if select=="q":return 'q'if select=='b':return 'b'if select in menu and menu[select]:  这句话的意思是满足select在menu中,而且 下一级为字典,不是空的情况borq= o_menu(menu[select])#这儿跟send有点像,执行到这儿return o_menu(menu[select])if borq=='q':  #但是当能够执行下去的话,在下一次循环中我输入了b 就会把b return给return 'q'#上一次调用的函数就是 o_menu(menu[select])  然后就borq =="b"了什么也不做
o_menu(menu)            #当等于'q"时,就会返回给上次的函数,直到跳出
三级菜单

转载于:https://www.cnblogs.com/wangkun122/p/7805623.html

http://www.wooajung.com/news/33981.html

相关文章:

  • 常州网站制作系统上海sem
  • 做网站点击率怎么收钱杭州网络
  • 西宁建站新东方小吃培训价格表
  • 高德地图怎么看邮编百度seo优化招聘
  • 医疗网站如何做优化引擎搜索优化
  • 请问那个网站做推广好点广告推广渠道
  • 丹东做网站企业培训方案制定
  • 优化型网站建设的基本要求徐州seo企业
  • 奉贤庄行网站建设百度sem推广
  • 成都网站设计公司怎么接广告推广
  • 产品推广有哪些平台seo平台有哪些
  • 对外宣传网站建设方案网络营销的策略包括
  • 招聘网站建设工作总结今日新闻最新头条10条
  • 企业网站一般要素免费seo技术教程
  • 企业网站建设中期报告模板成都网站制作
  • 如何用dw做网站框架google搜索引擎入口2022
  • 哪些网站可以做详情页永久8x的最新域名
  • 商城网站建设net2006免费发布产品的网站
  • 上海做网站费用全网营销代运营
  • 权重域名做网站有用么seo相关岗位
  • 怎么用2013做网站网络企业推广
  • 广州 营销型网站建设公司外链seo
  • 免费空间建站网站推荐网店产品seo如何优化
  • 网站建设开发软件代哥seo
  • 互联网企业排名2021网站排名优化软件联系方式
  • 淘宝客网站应该怎么做seo如何优化网站推广
  • 网站建设短信百度搜索引擎的原理
  • 中国建设银行网站在哪上市模板网站
  • 猪八戒做网站荆门网站seo
  • 是在百度中建设网站南宁seo优势