python递归写法_python递归怎么写

python递归写法_python递归怎么写1、递归的百度百科定义程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般…

大家好,又见面了,我是你们的朋友全栈君。

941dd461f100984a7d8410c80951f36f.png

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)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)。

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

递推:像上边递归实现所拆解,递归每一次都是基于上一次进行下一次的执行,这叫递推。

回溯:则是在遇到终止条件,则从最后往回返一级一级的把值返回来,这叫回溯。

众多python培训视频,尽在python学习网,欢迎在线学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150218.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 错误代码error2003的解决办法

    mysql 错误代码error2003的解决办法出现这种错误一般是mysql服务没有启动,在cmd中输入netstartMySQL就可以启动服务,但是输入之后出现说明没有MySQL这个服务,我们打开计算机管理查找服务,找到MySQL服务,发现服务名是MySQL80(服务名是根据自己电脑中安装的mysql版本),这时候我们点击启动服务,然后在命令行里输入netstartMySQ80,发现还是不行这时候,我们只需要退…

    2022年7月27日
    5
  • virsh查看虚拟网络信息_kvm创建虚拟机

    virsh查看虚拟网络信息_kvm创建虚拟机1.virsh查看/管理虚拟机问题本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务:1)查看KVM服务器信息2)列出有哪些虚拟机、指定虚拟机的状态3)基本的开关机操作4)将虚拟机设置为自动运行方案virsh命令行管理的常见用法:1)virsh:直接进交互模式2)virshnodeinfo:查看KVM节点(服务器)信息3…

    2022年8月12日
    22
  • 国外服务器直播网站,海外直播服务器搭建

    国外服务器直播网站,海外直播服务器搭建背景:最近有个朋友的APP需要在国外搭建一个直播服务器,因为他们的主播在韩国(主播主要是记者),而观众主要在国内,叫我帮忙给他们开发一个直播服务器。目前开源的直播服务程序有:SRS,Nginx-rtmp;如果是做开发的同学应该有所了解,SRS是基于C++写的,Nginx-rtmp模块是Ngxin的第三方C模块。一开始我是直接部署SRS/Ngxin-rtmp到我的韩国的服务器,结果直播rtmp或者…

    2022年5月12日
    122
  • redis默认端口为什么是6379_redis连接池的作用

    redis默认端口为什么是6379_redis连接池的作用找到redis的安装目录,正常应该都会在/usr/local/下*cd/usr/local/redis-5.0.8*viredis.conf*键入i>>修改默认端口号:6379>>6380,esc>>:wq*redis-server/usr/local/redis-5.0.8/redis.conf

    2025年12月16日
    2
  • _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php

    _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php

    2021年10月29日
    36
  • 周鸿祎说腾讯_周鸿祎的3Q

    周鸿祎说腾讯_周鸿祎的3Q6月10日老杳吧的一个手机厂商聚会上,奇虎360董事长周鸿祎有一段很有意思的发言。他用充满煽动性的语言对手机厂商们描述了市场环境、分析了自己的“敌人”小米科技和整个互联网的“敌人”腾讯,并极力为自己的360手机合作平台招徕伙伴。他对在场的手机和相关硬件生产商说,“现在所有的互联网公司在琢磨怎么做手机的同时,我觉得手机公司应该琢磨自己怎么转型。” 酷派、中兴、华为一年出多少手机,这个量比小米

    2025年11月19日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号