用递归方法求解汉诺塔问题。

/*
 * 汉诺塔问题求解。用递归方法。
 * 移动圆盘的过程分为3步:
 * 将A棒上的n-1个圆盘移到B棒上
 * 将A棒上的一个圆盘移到C棒上
 * 将B棒上的n-1个圆盘移到C棒上
 */
package test1;


import java.util.Scanner;


public class demo {
static long count;
static void hanoi(int n,char a,char b,char c)
{
if(n==1)
{
System.out.printf("第%d次移动:\n 圆盘从%c棒移动到%c棒\n",++count,a,c);
}
else
{
hanoi(n-1,a,c,b);
System.out.printf("第%d次移动:\n 圆盘从%c棒移动到%c棒\n",++count,a,c);
hanoi(n-1,b,a,c);
}
}
public static void main(String[] args)
{
int n;
count=0;
System.out.print("请输入数量:");
Scanner in=new Scanner(System.in);
n=in.nextInt();
hanoi(n,'A','B','C');
System.out.printf("总共需要%d步移动",count);
}
}

你可能感兴趣的:(java,递归,java,汉诺塔)