广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中如何实现递归方法
  • 149
分享到

python中如何实现递归方法

2023-06-22 05:06:04 149人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.递归概念递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个

小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1.递归概念

递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数。尽管表面上看起来很普通,但是递归可以帮助我们写出非常优雅的解决方案。对于某些问题,如果不用递归,就很难解决。
上面的话很难理解,我们用一个例子来说明:我们需要求解一个数组的所有数值之和。

#用for循环的简单函数def getsum(numlist):    a=0    for i in numlist:        a=i+a    return a

结果如下:

python中如何实现递归方法

如果暂时没有 while 循环和 for 循环。应该如何计算结果呢? 这个时候就需要想到我们计算加法的时候,是接受2个参数的函数,根据这个思想,我们将求一列数之和重新定义成求数字对之和。

python中如何实现递归方法

注:最内层的括号对(7 + 9)不用 循环或者其他特殊语法结构就能直接求解。
拟代码表示

#first(list)返回列表中的第一个元素,rest(list)则返回其余元素。用 Python 可以轻松地实现这个等式,getsum(list)=first(list)+getsum(rest(list))

代码表示:

#这是一个递归小案例,这个函数在函数内部自己调用了自listsum(numlist[1:])def listsum(numlist):    if len(numlist)==1:#当数组的长度为1时,代表是数组是一个数了        return numlist[0]    else:        return numlist[0] + listsum(numlist[1:])#第一个数加上后面的数,这里自己调用了自己,是数组不断递归的条件

在这一段代码中,有两个重要的思想值得探讨。首先,第 2 行检查列表是否只包含一个元素。 这个检查非常重要,同时也是该函数的退出语句。对于长度为 1 的列表,其元素之和就是列表中的数。其次,listsum 函数在第 5 行调用了自己!这就是我们将 listsum 称为递归函数的原因——递归函数会调用自己。

演示一下相加过程

python中如何实现递归方法

2. 递归三原则

递归算法有三个重要的原则:

  • 递归算法必须有停止条件

  • 递归算法必须改变其状态并向停止条件靠近

  • 递归算法必须递归地调用自己

让我们看看我们第一个案例是怎么实现这个部分的:

  • len(numlist)==1 用来判断停止条件

  • numlist[1:] 代表问题的数据以某种方式变得更小

  • return numlist[0] + listsum(numlist[1:]) 代表递归地调用自己

递归的逻辑并不是循环,而是将问题分解成更小、更容易解决的子问题。

2.1 实现任意进制的数据转换

下面展示一下将10进制的29转换为2进制数的方法,按照这个方法,可以将10进制转化为任意进制的数。

python中如何实现递归方法

这里我们用递归来实现2~16进制数的转换

#n代表要转化的10进制数,base代表你要实现的多少进制的数def toStr(n, base):    convertString = "0123456789ABCDEF"#取对应位置的字符    if n < base:#如果10进制数小于你所转换的进制数位数,则直接选择字符        return convertString[n]    else:#递归核心,n//base获取结果,然后进行递归        return toStr(n//base, base) + convertString[n%base]

将15转化为16进制数

python中如何实现递归方法

将15转化为2进制数

python中如何实现递归方法

看完了这篇文章,相信你对“python中如何实现递归方法”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网Python频道,感谢各位的阅读!

--结束END--

本文标题: python中如何实现递归方法

本文链接: https://www.lsjlt.com/news/302508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中如何实现递归方法
    小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.递归概念递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个...
    99+
    2023-06-22
  • php递归方法如何实现
    本篇内容介绍了“php递归方法如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php递归方法的实现方式:1、通过静态变量方式实现,代码...
    99+
    2023-07-04
  • python非递归全排列实现方法
    刚刚开始学习python,当前看到了函数这一节。结合数组操作,写了个非递归的全排列生成。原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排...
    99+
    2022-06-04
    递归 排列 方法
  • php递归方法怎么实现
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php递归方法怎么实现?递归的三种常用技法:静态变量、全局变量、引用一 静态变量方式function loop(){ static $i = 0; echo $i...
    99+
    2022-10-24
  • python二分查找算法的递归实现方法
    本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = ...
    99+
    2022-06-04
    递归 算法 方法
  • python如何实现递归求和
    这篇文章主要介绍python如何实现递归求和,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!递归求和python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型...
    99+
    2022-10-19
  • Python中的递归是如何实现的?
    Python中的递归是如何实现的?递归是一种在算法设计中常用的技术,它可以将一个问题分解成更小的同类问题,并通过不断地调用自身来解决。在Python中,递归函数可以简洁地实现这种分解和调用过程,使得代码更加清晰易懂。本文将介绍Python中...
    99+
    2023-10-25
    Python 递归 实现
  • python中如何用递归与迭代方法实现链表反转
    这篇文章主要讲解了“python中如何用递归与迭代方法实现链表反转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中如何用递归与迭代方法实现链表反转”吧!定义链表node结构:cl...
    99+
    2023-06-29
  • python递归&迭代方法实现链表反转
    定义链表node结构: class ListNode:       def __init__(self,data):         self.data = data        ...
    99+
    2022-11-13
  • mysql实现递归查询的方法
    小编给大家分享一下mysql实现递归查询的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql实现递归查询的方法:首先创建表,并初始化数据;然后向下递归,利用【find_in_set(...
    99+
    2022-10-18
  • 如何用PHP实现递归算法
    要使用PHP实现递归算法,首先需要定义一个递归函数。递归函数是指在函数内部调用函数本身的一种方法。下面是一个使用PHP实现递归算法的...
    99+
    2023-08-24
    PHP
  • Python技法之简单递归下降Parser的实现方法
    目录1. 算术运算表达式求值2. 生成表达式树左递归和运算符优先级陷阱3. 相关包参考总结1. 算术运算表达式求值 在上一篇博文《Python技法:用re模块实现简易tokenize...
    99+
    2022-11-10
  • Java递归方法实现山脉绘制
    本文实例为大家分享了Java递归方法实现山脉绘制的具体代码,供大家参考,具体内容如下 一、山脉绘制的思路 给定两个点A(x1,y1),B(x2,y2),递归不断取中点,同时给定一个范...
    99+
    2022-11-12
  • JavaScript如何实现递归
    这篇文章主要介绍JavaScript如何实现递归,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是递归?如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是...
    99+
    2023-06-21
  • Mysql树形递归查询的实现方法
    前言 对于数据库中的树形结构数据,如部门表,有时候,我们需要知道某部门的所有下属部分或者某部分的所有上级部门,这时候就需要用到mysql的递归查询 最近在做项目迁移,Oracle版本的迁到Mysql版本,遇...
    99+
    2022-10-18
  • Golang函数的递归调用实现方法
    Golang函数的递归调用实现方法随着Golang在软件开发中的广泛应用,函数的递归调用成为了程序员们实现复杂逻辑和算法的重要手段。递归调用是指在函数内部不断地调用自身,直至满足某一个条件终止循环。在本文中,我们将探讨Golang函数的递归...
    99+
    2023-05-17
    函数 Golang 递归调用
  • DropDownList显示的C#递归的实现方法
    本篇内容介绍了“DropDownList显示的C#递归的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#递归实现Drop...
    99+
    2023-06-17
  • java中如何实现递归排列
    递归排列递归,俗称“我 调 我 自 己”,如果从数据结构的角度来理解,其实就是栈。假如我们要求得到A、B、C的排列,流程大概如下:(0)初始状态,栈内无数据。此时栈外:A、B、C(1)将A放入栈底。此时栈外:B、C(2)将B放入栈中。此时栈...
    99+
    2020-04-05
    java 递归 排列
  • php中是如何实现递归的
    php实现递归的方法有3种:利用引用做参数,代码为【$result[]=$a;test($a,$result)】。利用全局变量完成递归函数。利用静态变量,代码为【static $count=0;】。...
    99+
    2022-10-12
  • 详解Python如何实现尾递归优化
    目录一般递归与尾递归一般递归尾递归C中尾递归的优化Python开启尾递归优化一般递归与尾递归 一般递归 def normal_recursion(n): if n == 1:...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作