【教程】python递归三部曲(基于turtle实现可视化)- 0 递归三原则

169 阅读3分钟

大家好,我是大爽歌

本教程为本人在b站投稿的视频教程对应的文字版(正在更新中)。 视频较详细,文本较简洁,大家选择一个看就好

本文主要通过三个实例来帮助大家理解递归(其展示动画已上传B站):

递归三部曲:

〇、递归及递归三原则

首先,什么是递归? 第一次接触这个概念的新人,往往很迷惑,直接去查定义的话:

定义:递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。

也会有一种好像明白又好像不明白的感觉。

在这里插入图片描述

为了让大家能够更简单直接的理解递归, 我这里做一个粗暴的比喻(暴论):

递归即套娃。

在这里插入图片描述

给大家讲个趣味小故事(雾) 并不是什么从前有座山,山里有个庙,庙里有个老神仙在那讲故事。 而是上古年间,愚公移山时期。

愚公说: 虽我之死,有子存焉; 子又生孙,孙又生子; 子又有子,子又有孙;

这里面的子又生孙,孙又生子其实就是个递归,如下图所示 在这里插入图片描述

当然这个递归有点小问题,那就是会 子子孙孙无穷匮(我们可以认为这是个bug) 解决这个bug也很简单 引入一个智叟工具人打断复读就可以了

在这里插入图片描述

最后言归正传

如果通过上面的一番说(gui)明(che),你还是不太明白什么是递归的话 没关系,我们暂时不太需要完全弄懂递归是什么 只要先弄懂递归需要怎么去操作就好 当我们弄懂了递归应该如何操作时,自然就理解了递归。

递归三原则

  1. 要有个基础条件,来退出递归
  2. 递归过程要向1中的基础情况靠拢
  3. 要不断的调用自身

原文 All recursive algorithms must obey three important laws: A recursive algorithm must have a base case. A recursive algorithm must change its state and move toward the base case. A recursive algorithm must call itself, recursively. 出处:runestone.academy/runestone/b…

第一次接触递归三原则的人可能会有些不是很明白的感觉,不知道每一步具体是要怎么做。 没关系,建议直接去看看我后面的三个实战,相信看完三个实战后在回过头来看递归三原则,自然而然就理解了。