汉诺塔算法步骤解析

#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if(n == 1) {
printf("Move sheet %d from %c to %c\n", n, A, C);
}
else {
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main() {
int n;
printf("请输入盘数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
如果n=3时,第三步我就不理解了,也就是执行到hanoi(n,B,A,C)这步,这个时候为什么A=‘C’,B='A',C='B'了
求n=3时候每步骤的解析。
是执行到hanoi(n-1, B, A, C);这步,写错了

第1个回答  2013-08-06
这是一个递归的过程,你要自己搞个简单例子摆一摆,再看看我的解释就明白了

hanoi(n-1, A, C, B);//将n-1个盘通过c从a移到b
printf("Move sheet %d from %c to %c\n", n, A, C);//将第n个盘从a移到c
hanoi(n-1, B, A, C);//将n-1个盘通过a从b移到c本回答被提问者采纳
第2个回答  2021-03-19

00:00
00:00
  • 2
  • 1.5
  • 1
  • 0.75
  • 0.5
X1
正在播放

相似回答