汉诺塔问题:设有三个塔座,依次命名为x,y,z。有z个直径不同的圆盘,由小到大依次编号为1、2、……,n。开始时,它们全部按递减的次序插在塔座上。现要求按下列规则把n个圆盘按次序插放在z塔座上。
(1)、每次只能移动一个圆盘;
(2)、圆盘可以从任一个塔座上移到另一个塔座上;
(3)、任何时刻都不能把一个较大的圆盘压在较小的圆盘上。
#include <stdio.h>
void main(){
void hannuo(int n, char one,char two,char three); //递归函数声明
hannuo(3,'A','B','C');
}
void hannuo(int n, char one,char two,char three){
void move(char x,char y); //移动函数声明
if(n==1){
move (one,three);
}
else{
hannuo(n-1,one,three,two); //第一步:从第一个柱子借助第三个柱子将n上面的全部移动到第二个柱子/
move(one,three); //第二步:把第n个盘子直接从第一个柱子移动到第三个柱子。
hannuo(n-1,two,one,three); //第一步:从第二个柱子借助第一个柱子将n上面的全部移动到第三个柱子/
}
}
void move(char x,char y){
printf("%c--->%c\t",x,y);
}