#include <iostream>
#include <stdio.h>
int count = 0;
void hanio(int n,char A,char B,char C)
{
if(n == 1)
{
printf("%d : %c -> %c \n",++count,A,C);
}
else{
hanio(n-1,A,C,B);
printf("%d : %c -> %c\n",++count,A,C);
hanio(n-1,B,A,C);
}
}
int main()
{
hanio(6,'A','B','C');
}
今天看到汉诺塔,做个简单的记录。
假设只考虑2个圆盘的汉诺塔。
结果如图。
如果有3个盘子,那么假设最上面的2个盘子是一个进行移动,结果和上图一样。
所以我们只要3个步骤就可完成汉诺塔的移动
1.将A柱的小圆盘(可能是多个【n-1】) 移动到b柱。
2.将A的大圆盘移动到c柱。
3.将B的圆盘挪动到A柱。
代码中 参数为 第几次移动 ,源位置,临时位置和目标位置。
a