标签:汉诺塔 tower of hanoi 递归 c语言
如果柱子标为A,B,C,要由A搬至C,在只有一个盘子时,就将它直接搬至C;当有两个盘子,就将B作为辅助柱;如果盘数超过2个,将第二个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A->C、B->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;
}
版权声明:本文为 iflei 原创文章,转载请注明出处。
标签:汉诺塔 tower of hanoi 递归 c语言
原文地址:http://blog.csdn.net/iflei/article/details/47665479