package io;
/**
* content:汉诺塔
* 移动步骤:
* 如果只有一个盘子:就直接将盘子从A移动到C
* 如果不是一个盘子的话,就采用递归,将盘子划分为两个大部分,将最上面的n-1个盘子从A移动到B(此时C是临时盘子)
* 之后再将n-1个盘子从B移动到C(此时临时盘子是A)
*/
public class Hnn
{
public static void main(String[] args)
{
System.out.println("共移动"+hnn(3,"A","B","C"));
}
private static int hnn(int n,String src,String temp,String dest)
{
int count=0;
if(n==1)
{
System.out.println("第"+n+"个盘子从"+src+"移动到"+dest);
src=dest;
count++;
}
else
{
count+=hnn(n-1, src, dest, temp);
count++;
count+=hnn(n-1, temp, src, dest);
System.out.println("第"+n+"个盘子从"+src+"移动到"+dest);
}
return count;
}
}