package hannota;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import zhuanghuan.Demo01;
public class Hannota {
//orign:表示原始塔,destination:表示目的塔,temporary:表示临时塔,即辅助塔
private static int count=0;
public static void move(int m,char orign,char destination,char temporary) //操作汉诺塔
{
if(m<0)
throw new RuntimeException();
if(m==1)
{
System.out.println("move disk 1 from"+ orign +"to"+ destination);
count++;
}
else
{
move(m-1,orign,temporary,destination);
System.out.println("move disk " +m + "from" +orign + "to"+ destination);
move(m-1,temporary,destination,orign); //使用得问题又回到原始问题,只不过规模逐渐减少而已
count++;
}
}
public static void main(String[] args)
{
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader reader=new BufferedReader(input);
String ss=null;
int aa=0;
System.out.println("请输入一个十进制数:");
try
{
ss=reader.readLine();
aa=Integer.parseInt(ss);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
Hannota.move(aa, 'A','B','C');
System.out.println("总共移动的次数为:"+Hannota.count);
}
}
汉诺塔(递归实现)
最新推荐文章于 2022-11-27 15:11:13 发布