利用递归函数,解决汉诺塔问题
void hanoi(int n,char a, char b,char c) {
if (n > 0) {
// 前n-1层从起始位置A经由C移动到B
hanoi(n - 1, a, c, b);
// 第n层直接从A移动到目的位置C
printf("第%-2d层: %c --> %c\n", n, a, c);
// 前n-1层移到B位置后,位置B变为其起始位置,经由A移动到目的位置C
hanoi(n - 1, b, a, c);
}
}
int main(int argc,const char * argv[]) {
int n = 0;
char a = 'A', b = 'B', c = 'C';
printf("请输入汉诺塔层数:\n");
scanf("%d", &n);
hanoi(n, a, b, c);
return 0;
}