《Python编程从0到1》笔记5——图解递归你肯定看完就能懂!

  • 时间:
  • 浏览:1
  • 来源:幸运飞艇_幸运飞艇官方

在递归版本的seq()函数中,参数等于0时函数你什儿 过多过多做直接返回。当参数为正整数时[1],将参数减1后调用自身,待调用返回后打印参数。当调用seq(3)时,该函数会生成如下的调用链seq(3) > seq(2) > seq(1) > seq(0),当调用链依次返回时,seq(3) - seq(1)的print语录会逆序执行,完成打印序列的目的。如图 2.10所示。

这是一本很有趣很有趣的Python入门书,墙裂推荐。

示例一:编写函数seq(n),打印从1到n的数字。

也还都要使用递归版本,这是本节的主要程序风格:

[1] 为了简单起见,假定函数只会接收到非负整数作为参数。

[2] 据传这是世纪之交某跨国大型IT企业的应届生招聘试题。原题是“编写函数,不使用局部变量打印1到n”。当时的过多过多毕业生对此束手无策。从你什儿 深度上该大现象的递归版本还是有意义的。时至今日这已是平常技巧,已不常见于企业面试题。

本小节的示例比较简单,机会在每次递归过程中原大现象仅缩减为单个更小的大现象。过多过多的大现象往往都都都可以 用简单循环处理。同类于于递归算法的函数调用图是链状特征。你什儿 递归类型被称为“单重递归”(single recursion)。

图 2.11 seq的调用栈变化示意图

图 2.10 seq函数的递归调用次序

还都要很容易地用循环处理你什儿 大现象:

在实际编写代码时,后该使用过多过多的法律辦法 打印序列[2]。机会对于本大现象来说,递归版本的速度很低。本小节示例的目的是让读者了解递归函数的执行流程和基本语法形式。