首页 / 知识
python递归怎么写
2023-11-12 13:12:00
python递归:
1、递归的百度百科定义
程序调用自身的编程技巧称为递归(recursion)。
递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的能力在于用有限的语句来定义对象的集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
2、递归的通俗理解
递归就是在函数内部调用自己的函数被称之为递归。
3、几个关于递归通俗的比喻
(资料来源于知乎问答:https://www.zhihu.com/question/20507130)
(1)我们使用的词典,本身就是递归,为了解释一个词,需要使用更多的词。当你查一个词,发现这个词的解释中某个词仍然不懂,
于是你开始查这第二个词,可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能
看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。
(2)一个小朋友坐在第10排,他的作业本被小组长扔到了第1排,小朋友要拿回他的作业本,可以怎么办?他可以拍拍第9排小朋友,
说:“帮我拿第1排的本子”,而第9排的小朋友可以拍拍第8排小朋友,说:“帮我拿第1排的本子”...如此下去,消息终于传到了
第1排小朋友那里,于是他把本子递给第2排,第2排又递给第3排...终于,本子到手啦!这就是递归,拍拍小朋友的背可以类比函数
调用,而小朋友们都记得要传消息、送本子,是因为他们有记忆力,这可以类比栈。
(3)一个洋葱是一个带着一层洋葱皮的洋葱。
4、最简单的递归的实例
#-*-coding:utf-8-*-
#将10不断除以2,直至商为0,输出这个过程中每次得到的商的值。
defrecursion(n):
v=n//2#地板除,保留整数
print(v)#每次求商,输出商的值
ifv==0:
'''当商为0时,停止,返回Done'''
return'Done'
v=recursion(v)#递归调用,函数内自己调用自己
recursion(10)#函数调用
输出结果:
5
2
1
0
5、递归的特点
通过以上的介绍,我们大致可以总结出递归的以下几个特点:
(1)必须有一个明确的结束条件;
(2)每次进入更深一层递归时,问题规模(计算量)相比上次递归都应有所减少;
(3)递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是的,所以,递归调用的次数过多,会导致栈溢出)。
关于递归还有两个名词,可以概括递归实现的过程:
递推:像上边递归实现所拆解,递归每一次都是基于上一次进行下一次的执行,这叫递推。
回溯:则是在遇到终止条件,则从最后往回返一级一级的把值返回来,这叫回溯。
以上内容为大家介绍了python培训之递归怎么写,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
python 培训之 object是什么类型
python 培训之 object是什么类型,培训,类型,实例,顶端,对象,关系,链条,父子,数据类型,属性,在Python的世界中,object是父子关系的顶端,所有的数pythonid函数如何运行
pythonid函数如何运行,培训,地址,代码,对象,函数,内存,类型,可能会,整数,字符串,id(object)功能:返回的是对象的“身份证号”,唯一且不变,但在不pythonmap函数怎么显示结果
pythonmap函数怎么显示结果,培训,代码,数字,函数,结果,序列,元素,参数,可能会,惰性,map()函数接收两个参数,一个是函数,一个是Iterable,map将传python写代码怎么跳下一行
python写代码怎么跳下一行,培训,代码,括号,末尾,空格,字符串,也就是,对象,以上,两个,python里一行写不下,拆成多行,有两种办法:\和()两种方法在pythonstr函数怎么使用
pythonstr函数怎么使用,培训,字符串,函数,字典,列表,参数,整数,形式,类型,示例,str函数是Python的内置函数,它将参数转换成字符串类型,即人适合pythonpython是函数式语言吗
pythonpython是函数式语言吗,培训,代码,函数,概念,指数,状态,语言,变量,计算机,程度,函数是Python内建支持的一种封装,我们通过把大段代码拆成python定义函数不带括号吗
python定义函数不带括号吗,培训,代码,函数,名称,情况,括号,定义,圆括号,自变量,参数,python定义函数带不带括号:函数能提高应用的模块性,和代码python带有yield的函数在Python中
python带有yield的函数在Python中如何使用,培训,异常,函数,生成器,结果,表达式,后边,语句,场景,关键字,yield的函数在Python中的使用yield在python有匿名函数吗
python有匿名函数吗,培训,代码,表达式,函数,参数,冒号,语法,定义,上面,关键字,python中是有匿名函数的,其表达式为lambda。lambda表达式的语法python函数的参数有几种
python函数的参数有几种,位置,一致,培训,参数,设计,代码,名字,异常,函数,结果,python中函数的参数可以分为位置参数,关键字参数和默认参数。下python闭包函数是什么
python闭包函数是什么,培训,环境,代码,地方,函数,变量,自由,包裹,例子,局部,函数身为第一类对象,它可以作为函数的返回值返回,现在我们来考虑如python函数定义如何使用
python函数定义如何使用,代码,数据,名称,名字,地方,培训,函数,定义,圆括号,语句,定义一个函数使用关键字def告诉Python你将要定义一个函数。