汉诺塔--使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱 第2步:2号盘从A柱移至C柱

输入

多组测试用例,每组输入一个正整数n,n代表圆盘数量。

输出

每组输出之间有一行空行。
 

样例输入 Copy

3

样例输出 Copy

第1步:1号盘从A柱移至C柱
第2步:2号盘从A柱移至B柱
第3步:1号盘从C柱移至B柱
第4步:3号盘从A柱移至C柱
第5步:1号盘从B柱移至A柱
第6步:2号盘从B柱移至C柱
第7步:1号盘从A柱移至C柱
#include <stdio.h>
int step;
void  move(long long int n,char a,char b){
    printf("第%d步:%lld号盘从%c柱移至%c柱\n",++step,n,a,b);
}
 
void hanoi(long long int n,char a,char b,char c){
    if(n>0){
        hanoi(n-1,a,c,b);
        move(n,a,c);
        hanoi(n-1,b,a,c);
    }
}
int main(){
    long long int n;
    while(~scanf("%lld",&n)){
        hanoi(n,'A','B','C');
        step=0;
        printf("\n");
    }
}

猜你喜欢

转载自blog.csdn.net/rongrongrongli/article/details/118108124