汉诺塔算法步骤解析
#include<stdio.h>voidhanoi(intn,charA,charB,charC){if(n==1){printf("Movesheet%dfrom%c...
#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);这步,写错了 展开
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);这步,写错了 展开
2个回答
展开全部
这是一个递归的过程,你要自己搞个简单例子摆一摆,再看看我的解释就明白了
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询