热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么这个递归有效?

如何解决《为什么这个递归有效?》经验,为你挑选了1个好方法。

我对此递归感到有点困惑:

def count(num):
    if num == 0:
        print('Go!',end=' ')
    else:
        count(num-1)
        print(num,end=' ')
count(5)

为什么这样做?打印"Go!"后程序不应该停止执行吗?

当我在python可视化工具中运行它时,打印出"Go!" 执行跳转到不应该发生的else语句...

例如,它打印"Go!1 2 3 4 5"但我希望它打印"Go!"



1> Martijn Piet..:

Go首先,因为其他print()电话才会发生的递归调用返回.递归函数调用就像任何其他函数调用一样; 一旦调用返回,则执行下一行.

这是发生的事情:

count(5) 叫做.

if num == 0是假的,所以else分支被采取

count(4) 叫做

if num == 0是假的,所以else分支被采取

count(3) 叫做

if num == 0是假的,所以else分支被采取

count(2) 叫做

if num == 0是假的,所以else分支被采取

count(1) 叫做

if num == 0是假的,所以else分支被采取

count(0) 叫做

if num == 0 是真的

print('Go!', end=' ') 被执行

Go!使用尾随空格写入并且没有新行到stdout

功能结束,返回

print(num,end=' ') 被执行

1使用尾随空格写入并且没有新行到stdout

功能结束,返回

print(num,end=' ') 被执行

2使用尾随空格写入并且没有新行到stdout

功能结束,返回

print(num,end=' ') 被执行

3使用尾随空格写入并且没有新行到stdout

功能结束,返回

print(num,end=' ') 被执行

4使用尾随空格写入并且没有新行到stdout

功能结束,返回

print(num,end=' ') 被执行

5使用尾随空格写入并且没有新行到stdout

功能结束,返回

对函数的每次递归调用都是一个单独的函数执行,除了每次它们不特殊时执行相同的代码.如果有帮助,请在心理上重命名功能; count5调用count4并等待它返回,但是count4等待count3等等.每个函数都暂停,直到它们调用的函数返回.一旦count0返回,count1不只是停止,它仍然有更多的代码要执行!


推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 刚开始crousera上学习<algorithmspart1>但对JAVA实在是不熟。******************************************** ... [详细]
  • 一文了解Python collections模块中的deque用法[python头条资讯]
    Python中文网有大量免费的Python入门教程,欢迎大家来学习。collections是Python内建的一个集合模块,deque是双边队列,具有队列和栈的性质,在list的基 ... [详细]
  • 796.[APIO2012]派遣在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为Master。 ... [详细]
  • 题目描述Takuru是一名情报强者,所以他想利用他强大的情报搜集能力来当中间商赚差价。Takuru的计划是让Hinae帮他去市场上买一个商品,然后再以另一个价格卖掉它。Takur ... [详细]
  • DescriptionclickmeSolution套路的状压期望DP题。。。考虑倒退期望:设fi,jrolepresentationstyleposi ... [详细]
  • JZOJ 1266. 玉米田
    1266.玉米田(cowfood.pasccpp)(FileIO):input:cowfood.inoutput:cowfood.outTimeLimits:1000msMemor ... [详细]
  • 学习mybatis的基础知识:mybatis入门教程(二)
    2019独角兽企业重金招聘Python工程师标准2.3MyBatisprintsql在log4j.properties配置文件中添加如下配置,让mybatis打 ... [详细]
  • 题面传送门Solution看到什么最大值最小肯定二分啊。check直接跑一个二分图匹配就好了。orzztl!!!代码实现*mail:mle ... [详细]
  •   并查集是一种群众喜闻乐见的数据结构,其复杂度是数据结构中最奇葩的之一了,Tarjan证明其为阿克曼函数的反函数,在可以想象(不全面的解释啊)的范围内小于等于3。。。我们就把它当做O(1)吧。下面通 ... [详细]
author-avatar
捡耙活哟752
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有