利用递归函数,解决汉诺塔问题
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;
}
本文通过递归函数详细解析了汉诺塔问题的解决方法,包括如何使用递归调用来实现塔盘间的移动,并提供了用户交互输入汉诺塔层数的功能。

被折叠的 条评论
为什么被折叠?



