100以内数的平方的最后两位有多少种可能性?老师说得用Python汉诺塔编写

         汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘

这里,我们把三根柱子分别命名为A、B、C。

其中A为起始柱,B为过度柱,C为结果柱( ABC只是命名不同,不需要一模一样。)

采用递归方法,要想解决n个圆盘的转移,先解决n-1个圆盘......

直到圆盘只剩下一个,即一定会有一步,使n-1个盘子移动到过度柱B,才能让最大的第n个盘子移动到C。

这时可以忽略第n个盘子了,使问题变成移动n-1(或者说是第n-1和n-2个)个盘子,从B经过A(新的过度柱)移动到C。

A->C  #此时最大的盘子已经移动到C   接下来剩下的要从B经过A(新的过度柱)移动到C。

 思路比较简单,内部代码运行可能比较麻烦,感兴趣如下:

注意,函数并非一直向下执行,而是多次重复步骤1,直到n-1个盘子都从A经过C移动到B,

以上为例,当有3个盘子时:

当A上剩余最后一个,此时继续执行步骤1,再进入一层函数

由于if条件不成立,函数结束,返回上一层函数hanoi(0, A, B, C)的末尾,函数层3的步骤1结束,开始执行print函数,函数层3的%(a,c)参数受函数层2的影响

由于if条件不成立,函数结束,返回上一层函数hanoi(0, A, B, C)的末尾,函数层3的步骤2结束,返回函数层2步骤一末尾,开始执行print函数,函数层2的%(a,c)参数受函数层1的影响

执行函数层3步骤1 ,结束

执行函数层3步骤2,结束

  • 执行函数层1步骤2(同上)

我要回帖

更多关于 python计算并输出n的32次方 的文章

 

随机推荐