题目:
输入汉诺塔问题中的盘子个数n,输出将n个盘子从A移动到C的方法。
盘子个数n。
将n个盘子从A移动到C的方法。
分析
使用递归的方法,将每一步的移动方法输出
代码
- void move(int a, int b) {
- printf("%c->%c\n", a, b);
- }
- void hanluota(int n, char a, char b, char c) {
- if (n == 1) {
- move(a, c);
- }
- else {
- hanluota(n - 1, a, c, b);//将A座上的n-1个盘子借助C座移向B座
- move(a, c);//将A座上最后一个盘子移向C座
- hanluota(n - 1, b, a, c);//将B座上的n-1个盘子借助A座移向C座
- }
- }
-
- int main() {
- int n = 0;
- scanf("%d", &n);
- hanluota(n, 'A', 'B', 'C');
- return 0;
- }