0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python支持递归函数

jf_78858299 来源:人工智能知识分享 作者:人工智能知识分享 2023-02-21 14:28 次阅读

Python支持递归函数——即直接或间接地调用自身以进行循环的函数。递归是颇为高级的话题,并且它在Python中相对少见。然而,它是一项应该了解的有用的技术,因为它允许程序遍历拥有任意的、不可预知的形状的结构。递归甚至是简单循环和迭代的替换,尽管它不一定是最简单的或最高效的一种。

要对一个数字列表(或者其他序列)求和,我们可以使用内置的sum函数,或者自己编写一个更加定制化的版本。这里我们就用递归来编写一个定制求和函数:

def mysum(L):

... if not L:

... return 0

... else:

... return L[0] + mysum(L[1:]) # Call myself

mysum([1,2,3,4,5])

15

在每一层,这个函数都递归地调用自己来计算列表剩余的值的和,这个和随后加到前面的一项中。当列表变为空的时候,递归循环结束并返回0。当像这样使用递归的时候,对函数调用的每一个打开的层级,在运行时调用堆栈上都有自己的一个函数本地作用域的副本,也就是说,这意味着L在每个层级都是不同的。

这很难理解(并且对于新程序员来说,它常常是难以理解),下面我们尝试给函数添加一个L的打印并再次运行它,从而在每个调用层级记录下当前的列表:

def mysum(L):

... print(L) # Trace recursive levels

... if not L: # L shorter at each level

... return 0

... else:

... return L[0] + mysum(L[1:])

...

mysum([1,2,3,4,5])

[1,2,3,4,5]

[2,3,4,5]

[3,4,5]

[4,5]

[5]

[]

15

正如你所看到的,在每个递归层级上,要加和的列表变得越来越小,直到它变为空——递归循环结束。加和随着递归调用的展开而计算出来。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62411
  • 循环
    +关注

    关注

    0

    文章

    92

    浏览量

    15952
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439
收藏 人收藏

    评论

    相关推荐

    快速掌握Python递归函数与匿名函数调用

    函数Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名
    发表于 07-19 16:22

    Labview递归函数的使用案例

    Labview递归函数的使用案例,简单的1+2+3...+100求和,简单易懂,充分理解递归函数的思想
    发表于 10-09 09:37

    C++教程之函数递归调用

    C++教程之函数递归调用 在执行函数 f 的过程中,又要调用 f 函数本身,称为函数递归
    发表于 05-15 18:00 35次下载

    递归指的是在函数的定义中使用函数自身的方法

    C语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。
    的头像 发表于 11-12 15:06 7088次阅读

    C++的实验教程之函数递归算法资料免费下载

    函数递归算法 1.范例:求组合数, 一、实验目的1. 学会解决简单的递归算法。2. 掌握函数的嵌套调用。
    发表于 01-29 10:51 2次下载
    C++的实验教程之<b class='flag-5'>函数</b>的<b class='flag-5'>递归</b>算法资料免费下载

    C语言-内联函数递归函数、指针函数

    这篇文章介绍C语言的内联函数递归函数函数指针、指针函数、局部地址、const关键字、extern关键字等知识点;这些知识点在实际项目开发
    的头像 发表于 08-14 10:03 1654次阅读

    Python-函数的进阶与递归

    在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者 **一个结果** ,以便调用者针对结果作后续的处理,返回值是函数完成工作后,最后给调用者的一个结果,在函数中使用 return 关键字可以返回结果,**调用者** 可以
    的头像 发表于 02-16 15:19 735次阅读
    <b class='flag-5'>Python</b>-<b class='flag-5'>函数</b>的进阶与<b class='flag-5'>递归</b>

    Python入门之什么是函数

    Python函数比我们想象的更为灵活。由于Python函数是对象,所以函数对象可以赋值给其他的名字、传递给其他
    的头像 发表于 02-21 14:24 481次阅读

    函数递归-3

    程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个
    的头像 发表于 02-21 15:57 554次阅读

    什么是Python递归函数

    递归函数必须有终止条件。编程中,函数的调用要占用名叫栈(stack)的内存空间。调用函数时,程序会将相关的数据存储到计算机的栈里。
    的头像 发表于 02-23 10:25 1776次阅读

    C语言,你真的懂递归了吗?

    要说到递归如果不说栈的话,我觉得有点不合适,递归特点就是不断的调用同一个函数,如果这个函数没有一个递归界限,那么就是死循环了,所以讨论
    的头像 发表于 06-06 15:24 962次阅读
    C语言,你真的懂<b class='flag-5'>递归</b>了吗?

    python函数返回多个参数

    函数是程序设计中的一个重要概念,在很多编程语言中都存在。函数可以接受输入数据,并且根据输入数据进行一系列操作,最后可以返回一个或多个结果。Python是一种非常流行的编程语言,也支持
    的头像 发表于 11-21 16:37 1183次阅读

    不属于python的内置函数

    Python是一种高级编程语言,它提供了许多内置函数,可以帮助开发人员更轻松地处理各种任务。但是,在Python中并非所有的函数都是内置函数
    的头像 发表于 11-29 14:27 1380次阅读

    关于C语言中的递归

    递归指的是在函数的定义中使用函数自身的方法。
    发表于 02-26 10:34 335次阅读
    关于C语言中的<b class='flag-5'>递归</b>

    Python递归的经典案例

    当我们碰到诸如需要求阶乘或斐波那契数列的问题时,使用普通的循环往往比较麻烦,但如果我们使用递归时,会简单许多,起到事半功倍的效果。这篇文章主要和大家分享一些和递归有关的经典案例,结合一些资料谈一下个人的理解,也借此加深自己对递归
    的头像 发表于 08-05 15:57 273次阅读