python递归法求阶乘,python 阶乘算法

  python递归法求阶乘,python 阶乘算法

  我们过去学过递归函数,递归函数使用递归算法。以前我们是通过最常见的魅力鼠标序列来学习递归函数的。在本节中,我们将详细了解递归算法。

  1.递归算法

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

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

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

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

  递归算法还有几点需要注意,我们在前面的递归函数中也提到过,即:

  1)递归是在函数本身中调用函数本身。

  2)递归效率低,如果有时间限制的话不建议使用。

  3)递归的过程中需要有明确的结束条件,即递归出口。

  2.河内塔问题

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

  问题描述如下:

  河内塔是一种古老的游戏。

  有三列,编号为1、2和3。

  第1列从大到小有n块板。

  每次移动顶板时,都可以移动到其他列。

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

  请把所有的盘子从1号柱子移到3号柱子。

  开始:

  移动到这个:

  现在,给定n个盘子,请用最短的次数描述移动的过程。

  我们先来分析一下这三个板块的运动方式如下:

  -

  -

  -

  -

  代码如下:i=1

  defmove(n,fr,to):

  globali

  Print(这是步骤%d:将印版%d从%s移动到%s%(i,n,fr,to))

  i=1

  defhanoi(n,a,b,c):

  ifn==1:

  移动(1,a,c)

  否则:

  河内(n-1,a,c,b)

  移动(n,a,c)

  河内(n-1,b,a,c)

  if__name__==__main__ :

  N=int(输入(输入A上的板数:))

  打印(“移动开始”)

  河内(n, A , B , C )

  让我们输入3来测试移动步长是否对应上图:输入A: 3上的板数

  开始移动。

  这是第一步:把1号板从A移到c。

  这是第二步:把2号板从A移到b。

  这是第三步:把1号板从C移到b。

  这是第四步:把3号板从A移到c。

  这是第五步:把1号板从B移到a。

  这是第六步:把2号板从B移到c。

  这是第七步:把1号板从A移到c。

  结果我们可以看到和图中显示的一致。注意代码中的hanoi(n,A,b,C)的意思是通过b列将A列的N个板块移动到C列,hanoi(n-1,1,3,2)然后会执行hanoi(n-1,2,1,3),主要是通过这个递归函数来完成列。

  3.摘要

  递归思想在我们的学习中经常用到。如何熟练使用递归,可以参考前面递归函数中的内容。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: