汉诺塔问题的java递归实现
import java.util.Scanner; public class Hanoi { int count=0; public void hanoi(int n,char A,char B,char C){ //把n个盘子移动到c count++; if(n==1){ System.out.println("盘子1从"+A+"移动到"+C); //再把最下边那个最大的盘子移到目标柱c上 } else{ hanoi(n-1,A,C,B); //先把最大的那个盘子上边的n-1个盘子移到空柱子B上 System.out.println("盘子"+n+"从"+A+"移动到"+C); hanoi(n-1,B,A,C); //最后把n-1个盘子从B移到C } } public static void main(String[] args) { Hanoi h=new Hanoi(); Scanner sc=new Scanner(System.in); int c=sc.nextInt(); h.hanoi(c,'A','B','C'); System.out.println(c+"个盘子共需移动"+h.count+"次"); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。