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

网站专题页面/客户管理软件哪个好用

网站专题页面,客户管理软件哪个好用,印象云笔记 wordpress,网站html地图怎么做的本篇主要介绍Python中函数的递归,还是从三个方面了解:什么是递归;递归有什么好处;递归的具体用法是什么样的; 一、什么是递归? 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身&a…

本篇主要介绍Python中函数的递归,还是从三个方面了解:什么是递归;递归有什么好处;递归的具体用法是什么样的;

一、什么是递归?

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。记住哦->在函数内部调用其他函数不是函数的嵌套,而在函数内部定义子函数才是函数的嵌套。

递归的特性:

1、递归函数必须有一个明确的结束条件。

2、每进入更深一层的递归时,问题规模相对于上一次递归都应减少

3、相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。

4、递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

先看一个例子,一个关于实现叠加的两种方法的例子:

importsys#通过循环来实现叠加

defsum1(n):'''1 to n,The sum function'''sum=0for i in range(1,n + 1):

sum+=ireturnsum#通过函数的递归来实现叠加

defsum2(n):'''1 to n,The sum function'''

if n >0:return n + sum_recu(n - 1)    #调用函数自身

else:return0print("循环叠加-->",sum1(100))print("递归叠加-->",sum2(100))#两者实现的效果均是:5050

从上述例子中可以看出,两者都可以实现叠加的效果。那么后者相对前者有什么优缺点呢?

二、递归函数有啥优缺点?

递归函数的优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

递归函数的缺点:使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

把上面的递归求和函数的参数改成10000就导致栈溢出!

当然也可以通过尾递归来对递归的栈溢出进行优化。这里就不详细介绍了。请参考:http://www.open-open.com/lib/view/open1480494663229.html

三、通过实例来介绍函数递归:

下面我们通过一个问路的例子,更好的理解递归:

#假如街上有这么一群人,我想问知道长沙的小吃街在哪。其中只有狗菲(大吃货)知道在哪。

names=["我","刘二","张三","李四","狗菲","王五"]#问路

defask_way(lis):#街上就我一个人的情况下

if len(lis)==1:return "没有人知道这个地方在哪。"

#街上不只我一个人的情况下,先问第一个人

name=lis.pop(0)#如果这个人是狗菲,那么问到路,递归结束

if name=="狗菲":return "狗菲说:长沙的小吃街在天心区南门口!!"

#如果这个人不知道路,就去问下一个人,下一个人就好把结果告诉这个人。

print("<%s>问:你[%s]好,请问你知道长沙的小吃街在哪吗?" %(name, lis[0]))print("不好意思,我帮您问一下%s,他可能会知道!!\n"%lis[0])

res=ask_way(lis)if name != "我":print("<%s>说:%s" %(name, res))returnres#输出结果为:

"""<我>问:你[刘二]好,请问你知道长沙的小吃街在哪吗?

不好意思,我帮您问一下刘二,他可能会知道!!

<刘二>问:你[张三]好,请问你知道长沙的小吃街在哪吗?

不好意思,我帮您问一下张三,他可能会知道!!

<张三>问:你[李四]好,请问你知道长沙的小吃街在哪吗?

不好意思,我帮您问一下李四,他可能会知道!!

<李四>问:你[狗菲]好,请问你知道长沙的小吃街在哪吗?

不好意思,我帮您问一下狗菲,他可能会知道!!

<李四>说:狗菲说:长沙的小吃街在天心区南门口!!

<张三>说:狗菲说:长沙的小吃街在天心区南门口!!

<刘二>说:狗菲说:长沙的小吃街在天心区南门口!!

狗菲说:长沙的小吃街在天心区南门口!!"""

其实用图来表示就是:

1328034-20180530221507453-1164781990.png

从上面的图示我们也可以知道:递归值的返回时返回到上一层,而其他的层在执行的过程中,均处于等待答案的过程中。

http://www.jmfq.cn/news/5082049.html

相关文章:

  • 飞虎队网站建设/百度竞价推广怎么做
  • 那些语言可以做动态网站/seo chinaz
  • 彩票网站开发 彩票软件开发/seo策略工具
  • 南京移动网站建设效果好/四川seo快速排名
  • 网站效果展示/google学术搜索
  • unity网站后台怎么做/头条搜索
  • 网站后台的东西都是要上传到在虚拟主机上面吗/seo一般包括哪些内容
  • 深圳经营性网站备案/网站top排行榜
  • 上海网站推/下载百度地图2022最新版官方
  • 福州专业网站建设价格/无锡百度快速优化排名
  • 网站系统架构图/百度推广登录页面
  • 网站开发和网站建设/电脑优化大师下载安装
  • 电脑网站制作教程/宁波正规seo推广
  • 宁波网站建设哪家好/搜索引擎优化方法总结
  • 企业门户网站在信息系统架构中属于哪个层次/2023网络营销成功案例
  • 网站建设 开发/推广引流吸引人的标题
  • php 获取网站根域名/软文宣传
  • 类似一起做网店的网站/外贸网站制作公司
  • 淘宝天猫做网站咨询/b站推广app大全
  • 中国建设银行公积金网缴网站/免费的短视频app大全
  • 网站首页图片轮播/互联网创业项目
  • wordpress门户网站主题/东莞seo建站排名
  • 网络管理系统有哪几部分组成/衡阳seo优化首选
  • 建网页用什么软件/杭州seo百度关键词排名推广
  • 做甜品网站栏目/上海sem
  • 有视频做的很好的网站吗/站长网站查询
  • 服务器网站建设教程/搜索引擎优化seo是什么
  • 网站建设通/真正免费建站网站
  • 广东网站建设多少钱/网站优化技巧
  • bex5可以做网站吗/搜索引擎快速排名推广