首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >递归函数内部发生了什么

递归函数内部发生了什么
EN

Stack Overflow用户
提问于 2021-01-04 12:01:13
回答 1查看 22关注 0票数 0

我现在正在学习Python和递归函数。我只是被它卡住了,实际上不知道递归步骤执行后发生了什么。我有一个这样的例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# sum of list
def my_sum(L):
   # this step is just print out current list 
   # at each level
   print(L)
   if not L:
      return 0
   else:
      return L[0] + my_sum(L[1:])

上面的函数的结果是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[1,2,3,4,5]
[2,3,4,5]
[3,4,5]
[4,5]
[5]
[]
15

我读过一些关于递归的文章,对它有一定的了解。然而,在这种情况下,我根本看不到L的大小减少了,那么列表怎么会像这样变小呢?

有人能帮我解决这个问题吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-01-04 12:03:42

这段代码:L[1:]对数组中除第一项以外的所有项进行切片。这就是减小数组大小的地方。

它等同于tail

因此,在此示例中:

L[0]是head

L[1:]是尾部

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65562392

复制
相关文章
什么是递归函数?[通俗易懂]
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。 所以递归要有两个要素,结束条件与递推关系
全栈程序员站长
2022/10/01
1.1K0
什么是递归函数?[通俗易懂]
使用ArrayList时代码内部发生了什么(jdk1.7)?
ArrayList(这里的ArrayList是基于jdk1.7)是在项目中经常使用的集合类,例如我们从数据库中查询出一组数据。这篇文章不去剖析它的继承和实现,只是让我们知道实例化及增删改查时它的内部代码是怎么实现的。
云枭
2019/02/25
3370
NBA这三十年发生了什么,Python告诉你~
关于数据源的介绍以及字段解释各位可以移步科赛网 查看,使用的数据源是 team_season.csv。
Awesome_Tang
2018/09/11
5580
NBA这三十年发生了什么,Python告诉你~
【说站】PHP内部函数是什么
(2)在函数内部可以调用内部函数, 但是必须在内部函数定义之后调用,因为PHP解析器只会加载外部函数并不会执行外部函数,所以不知道外部函数中还有内部函数。
很酷的站长
2022/11/23
6020
从创建进程到进入main函数,发生了什么?
前几天,读者群里有小伙伴提问:从进程创建后,到底是怎么进入我写的main函数的?
CSDN技术头条
2020/11/04
1.4K0
从创建进程到进入main函数,发生了什么?
递归函数
这里使用的是命名函数表达式的方法实现递归,将这个函数赋值给 factorial 。这样即使在使用过程中对变量进行修改,也不会影响已赋值的递归函数进行调用,保证了代码的安全性。这种方式在严格模式和非严格模式下都适用。
就只是小茗
2018/12/12
7780
递归函数
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。
大忽悠爱学习
2021/03/04
7070
递归函数[通俗易懂]
当然,你可以尝试会发生什么结果,理论上会永远运行下去,但实际操作时发现不一会儿程序就报错了,因为每次调用函数都会用掉一点内存,在足够多的函数调用发生后,空间几乎被占满,程序就会报错。
全栈程序员站长
2022/09/07
7240
递归函数[通俗易懂]
函数递归
如果一个函数在内部调用自身本身,则该函数就是递归函数 递归优缺点   优点:使用递归函数的优点是逻辑简单清晰      理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰   缺点:过深的调用会导致栈溢出 栈溢出   使用递归函数需要注意防止栈溢出   在计算机中,函数调用是通过栈(stack)这种数据结构实现的   每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧   由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出 尾递归   解决递归调用栈溢出的方法是通过尾递归优化   事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的
py3study
2020/01/15
9550
python递归函数讲解_Python递归函数实例讲解
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 last = len(alist)-1 found = False while first<=last and not found: midpoint = (first + last)//2 if alist[midpoint] == item: found = True else: if ite
全栈程序员站长
2022/11/17
3.4K0
python递归函数讲解_Python递归函数实例讲解
javascript递归函数
当你把这个函数拿到浏览器上运行的时候,你会发现内存溢出了,为什么呢?因为这个递归函数没有停止处理或运算的出口,因此 这个递归函数就演变为一个死循环。
用户6167509
2019/09/04
7680
优化函数递归
递归是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。使用递归解决问题,思路清晰,代码少。但是在 Python 中,使用递归会消耗很大的空间,可能还会产生大量的重复的计算。所以我们应该想办法消除递归,下面我以斐波那契序列为例讲解几种消除递归的方法。
不可言诉的深渊
2019/08/13
1.1K0
尾递归函数
Kotlin 支持一种称为尾递归的函数式编程风格。 这允许一些通常用循环写的算法改用递归函数来写,而无堆栈溢出的风险。 当一个函数用 tailrec 修饰符标记并满足所需的形式时,编译器会优化该递归,留下一个快速而高效的基于循环的版本:
阿超
2022/10/31
7330
Python 递归函数
递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出: fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n 所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理。 于是,fact(n)用递归的方式写出来就是:
bear_fish
2018/09/20
1.2K0
Python 递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
全栈程序员站长
2022/09/07
1.4K0
Python 递归函数
Python递归函数
https://www.python-course.eu/recursive_functions.php
py3study
2020/01/20
1.2K0
Python函数递归
1.己知有一个数列:f(0) = 1,f(1) = 4,f(n + 2) = 2*f(n+ 1) +f(n),其中 n 是大于 0 的整数,求 f(10) 的值。 找出f(n): f(0) = 1,f(1) = 4, f(n + 2) = 2*f(n + 1) +f(n) 当n=1时: f(3)=2*f(2)+f(1) 当n=2时: n=2 f(4)=2*f(3)+f(2) 当n=3时: n=3 f(5)=2*f(4)+f(3) 当n=4时: n=4 f(6)=2*f(5)+f(4) ...... f(n)
织幻妖
2021/07/04
9280
Python函数递归
python递归函数
python递归函数 英文的Recursion从词源上分析只是"re- (again)" + "curs- (come, happen)" 也就是重复发生,再次重现的意思。 而对应的中文翻译 ”递归“ 却表达了两个意思:”递“+”归“。 这两个意思,正是递归思想的精华所在。从这层次上来看,中文翻译反而更达意。
红芽
2020/08/19
1K0
什么是php递归函数及简单实例讲解
递归函数即自调用函数,在函数体内部直接或者间接的自己调用自己,即函数的嵌套调用是函数本身。通常在此类型的函数提之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定的条件下终止函数的递归调用动作,把目前流程的主控权交回到上一层函数来执行。以此,当某个执行递归调用的函数没有附加条件判断叙述时,可能会造成无限循环的错误情形。
全栈程序员站长
2021/06/17
5760
内部函数与外部函数
函数是c语言程序中的最小单位,往往把一个函数或多个函数保存为一个文件,这个文件称为源文件。定义一个函数,这个函数就要被另外的函数所调用。但当一个源程序由多个源文件组成时,可以指定函数不能被其他文件调用,这样C语出又把函数分为两类:一个是内部函数,另一个是外部函数。
pigeon
2022/04/11
9820

相似问题

PHP5中简单而强大的图表库

40

简单的独立网站检查工具

40

强大而简单的在.NET中实现加密技术?

23

用于故障转移IIS服务的强大而准确的IIS报告工具

10

强大的windows计算器工具?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文