1、递归百度百科的定义
程序调用自身的编程技巧称为递归(recursion )。
递归作为算法在编程语言中被广泛使用。 进程或函数可以直接或间接地在其定义或说明中调用自己。 通常,将大的复杂问题转换为与原问题相似的小规模问题来解决。 递归策略可以用很少的程序编写解决问题的过程所需的迭代计算,大大减少了程序的代码量。
递归的能力在于用有限的语句定义对象的无限集合。 一般来说,递归需要边界条件、递归前进段和递归返回段。 如果不满足边界条件,则递归前进; 如果满足边界条件,则返回递归。
2、递归简单易懂的理解
递归是指在函数内部调用自己的函数称为递归。
3、关于递归通俗的一些比喻(资料来源于知乎问答(https://www.zhi Hu.com/question/20507130 )
)我们使用的词典,本身就是递归的,为了说明一个词,需要使用更多的词。 lldjmg查了词,发现还不明白这句话说明中的某个词。
于是,我开始调查这第二个词。 很遗憾,第二句话中还有不明白的话。 于是,我查一下第三个词,这样调查下去,直到一个词的说明完全完成为止
我明白。 那么递归到了结束。 然后,你开始后退,把之前查过的每一句话都理解了,最终,你明白了第一句话的意思。
)2)一个孩子坐在第十排,他的作业本被组长扔到了第一排。 孩子要拿回他的作业本,该怎么办? 他拍拍第九排的孩子
说“给我拿第一排笔记本来”,第九排孩子拍拍第八排孩子,可以说“给我拿第一排笔记本来”……就这样,消息终于传来了
到第一排孩子那里,他把笔记本给了第二排,第二排又给了第三排……终于拿到了笔记本! 这是递归的,可以拍拍孩子的背模仿函数
呼叫,孩子们之所以记得传递消息,发笔记,是因为他们有记忆力。 这和堆栈很像。
)3)一个洋葱是有洋葱皮的洋葱。
4、最简单递归实例#-- *--编码: utf-8-- * -
#将10除以2直到商变为0,输出在该过程中每次得到的商的值。
defrecursion(n ) :
v=n//2#清除地板,保留整数
每次求出print(v ) #商时,输出商的值
ifv==0:
“”商为0时,停止,返回Done“”
返回' done '
v=recursion(v ) #递归调用,在函数中调用自身
recursion(10 )函数调用
输出结果: 5
2
1
0
5、递归特征
以上介绍可以概括递归的以下特征。
)1)必须有明确的终止条件
)2)每次进入更深的递归,问题的规模()计算量)应该比上一次递归减少。
)3)递归效率不高,递归层次太多会引起堆栈溢出(在计算机中,函数调用用堆栈(stack )数据结构实现,每次进入一个函数调用都会向堆栈中添加堆栈帧堆栈的大小不是无限的,因此递归调用的次数过多,堆栈会溢出)。
递归还有两个名词。 可以概括递归实现的过程。
递归:正如以上递归实现中分解的那样,递归每次都根据上次执行以下操作。 这叫递归。
回溯:遇到退出条件时,返回倒数一级的值。 这叫做回溯。
很多python教程都是云海天教程网,欢迎在线学习!