现有3个柱子A、B、C,有n个圆盘在A柱上,要实现n个圆盘要从A柱从大到小移动到C柱。
思路:先将n-1个圆盘移动到B柱上,然后将最后一个圆盘移动到C柱上,最后将B柱上的n-1个圆盘移动到C柱。
#include <stdio.h> void move(char A, char C, int n) { printf("把第%d个圆盘从%c-->%c\n", n,A, C); } void Hanoi(char A, char B, char C, int n) { if (n == 1) { move(A, C, n); } else { //n-1个圆盘借助C移动到B Hanoi(A, C, B, n-1); //最后一个圆盘从A移动到C move(A, C, n); //n-1个圆盘从B借助A移动到C Hanoi(B, A, C, n - 1); } } int main() { int n = 0; printf("输入A柱上圆盘的个数\n"); scanf("%d",&n); Hanoi('A', 'B', 'C', n); return 0; }