打卡
Topic sourcedef move(n,a,b,c): if n ==1: print(a, '-->', c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)
- 1
def move(n,a,b,c): if n ==1: print(a, '-->', c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)
阿壳婚外女友
看了知乎和b站的相关汉诺塔原理的帖子和视频,对汉诺塔的运行原理稍微理解了一点
附上相关链接
https://www.bilibili.com/video/av9830115/?spm_id_from=333.788.videocard.1
https://www.zhihu.com/question/24385418
代码如下:
def move(n,a,b,c):
** if n ==1:**
** print(a, '-->', c)**
** else:**
** move(n-1,a,c,b)**
** move(1,a,b,c)**
** move(n-1,b,a,c)**
设定三个柱子为a,b,c
三个柱子在每次移动中分别被分为起点,中转站,和终点,
从起点到终点都需要经过中转
移动顺序为 起点 》》中转 》》 终点
def move(n,a,b,c):
** if n ==1:**
** print(a, '-->', c)**
a》》c这个总体的汉诺塔运动过程需要借助b作为中转站 只有把n-1个盘子全部移动到中转站b,才能把最后一个盘子也就是最大的盘子移动到终点c
所以我们先进行第一步,把n-1个盘子由a经c移动到**b **
** else:**
** move(n-1,a,c,b)**
这时候起点a上还有一个最大的盘子,我们需要把a上的最大的盘子移动到c
move(1,a,b,c)
b上此时还有n-1个盘子,把n-1个盘子由b经a到c
move(n-1,b,a,c)