知行编程网知行编程网  2022-09-10 13:00 知行编程网 隐藏边栏  8 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python递归怎么写的相关知识,包括正则表达式怎么写,以及java递归怎么写这些编程知识,希望对大家有参考作用。


如何在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,输出这个过程中每次得到的商的值。
def recursion(n):
    v = n//2 # 地板除,保留整数
    print(v) # 每次求商,输出商的值
    if v==0:
        ''' 当商为0时,停止,返回Done'''
        return 'Done'
    v = recursion(v) # 递归调用,函数内自己调用自己
recursion(10) # 函数调用

输出结果:

5
2
1
0


5、递归的特点

通过上面的介绍,我们大致可以总结出递归的以下几个特点:

(1)必须有一个明确的结束条件;

(2)每次进入更深的递归,问题规模(计算量)应该比上一次递归减少;

(3)递归效率不高,递归层级过多会导致栈溢出(在计算机中,函数调用是通过栈的数据结构来实现的,每当进入函数调用时,都会往栈中添加一个栈stack.frame,每当函数返回时,栈都会减一栈帧。由于栈的大小不一样,递归调用太多会导致栈溢出)。

还有两个关于递归的名词,可以概括递归实现的过程:

递归:和上面的递归实现一样,每次递归都是基于上一次执行下一次执行,称为递归。

回溯:当遇到终止条件时,从末尾开始逐级返回值,称为回溯。

众多
,尽在python学习网,欢迎在线学习!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享