Code前端首页关于Code前端联系我们

学习Python算法:递归算法

terry 2年前 (2023-09-27) 阅读数 75 #数据结构与算法

我们已经学习了递归函数。递归函数使用递归算法。之前,我们通过一般的斐波那契数列学习了递归函数。在本节中,我们将了解有关递归算法的更多信息。 。

1。递归算法

计算机科学中的递归算法(英语:recursionalgorithm)是指通过反复将问题分解为相似的子问题来解决问题的方法。递归方法可以用来解决许多计算机科学问题,因此它是计算机科学中非常重要的概念。递归算法具有三个特点:

1)递归过程一般由函数或子过程来实现。

2)递归算法在其内部直接或间接调用自己的算法。

3)递归算法是将大规模问题转化为小规模问题,然后调用递归函数来解决的过程。

递归算法也有一些需要注意的地方。我们在前面的递归函数中也提到过,分别是:

1)递归调用函数本身和函数本身。

2)递归效率比较低,有时间限制时不建议使用。

3)递归过程中必须有明确的结束条件,即递归退出。

2。汉诺塔问题

汉诺塔问题也是一个非常经典的算法问题。

问题描述如下:

汉诺塔是一个古老的游戏。

一共有3列,编号为1、2、3。

1号药丸从大到小共有n个盘子。

每次移动顶板时,都可以将其移动到其他柱子上。

任何盘子都不能堆叠在较小的盘子之上。

请移动。从第 1 柱到第 3 柱的所有板块。

从:

python算法学习:递归算法

移动到此:

python算法学习:递归算法

现在,n 个板块是给出的最短移动时间。 。首先我们分析一下这三个板块的运动:

python算法学习:递归算法-> python算法学习:递归算法

python算法学习:递归算法-> python算法学习:递归算法

python算法学习:递归算法-> python算法学习:递归算法

python算法学习:递归算法-> python算法学习:递归算法

i❀ ❀ ❿ = 打印('这是步骤 %d:将盘子 %d 从 %s 移动到 %s'%(i,n ,fr,to)) i + 1def 河内(n,a,b,c): 如果 = 1: 移动(1,a,c) else ::河内(n) -1, a,c,b) 移动(n,a,c) 河内(n-1,b,a,c) __name__ == '__main__' n n I '__main__'__main__'__main__' 输入我们 3 测试动作 按照上图对应的步骤操作:

123456789输入A中的盘子数量:3开始移动这是

步骤:将盘子

1A移动到C这是步骤2:移动板2从A到B这是步骤3:将板2从A移动到B这是步骤3是步骤4:将板3从A移动到C这是步骤5:将板1从B移动到A从B移动到C这是步骤7:将板1从A移动到C

有了结果我们就可以与照片中显示的一致。注意代码中的hanoi(n,a,b,c)表示将A柱上的n块板通过B柱移动到C柱,hanoi(n-1,1 ,3,2)然后hanoi(n-1,2 ,1,3)进行,主要是通过这个递归函数来完成支柱的运动

3.总结

在我们的学习中经常会用到递归的思维。上一个递归函数中的内容。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门