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+"次");
}
}
分享到:
相关推荐
汉诺塔问题的递归算法,附详细代码以及运行结果,有详细的算法描述。
汉诺塔的算法。用递归实现,就简单的几行代码。给大家参考
汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数
人工智能课的一个作业,实现了汉诺塔-非递归-java代码,并附有实验说明、报告
本程序使用java变成,利用递归思想,动态演示了汉诺塔的实现过程
描述:递归解决汉诺塔问题 使用技术:java swing 工具:Eclipse 主程序:hanno.app.AppMain
代码在src下,你也可以使用netbean打开它。本程序带有命令行下的图形界面。
规则1:每次只能移动一个圆盘 规则2:任何时候都不允许将较大的圆盘压在较小的圆盘上 规则3:在满足移动规则1和2的前提下,可将圆盘移动到A,B,C中任一塔座上 ...本程序是java语言编写,递归方式实现的演示程序
汉诺塔的java实现,练习递归算法的典型例子
1汉诺塔问题: 包括了三种实现方式。a传统递归;b非递归,用Stack;c非递归,直接根据通项式规律求出 2普里姆算法: 其思想是加点法,程序中用一个StringBuffer来记录已经被访问了点 3克鲁斯克尔算法: 其思想是加边...
汉诺塔的递归实现 JAVA实现,自己写的
有三根柱子A,B,C,A柱子上有N个盘子,从小到大依次叠放,要求把A上的盘子都移到C上,B可以作为临时存放,移动的时候必须始终遵循小盘子在大盘子上面,且每次只能移动一个盘子。
用递归算法实现的汉诺塔,用的是java,没什么技巧性,初学者可参考一下
这个简单的汉诺塔演示程序,主要是将经典汉诺塔问题用图形显示出来。本程序主要是通过使用JAVA中的一些事件监听来实现功能按钮。核心程序用递归的算法:在A,B,C 根针上依次移动摆放在针上的大小不一的方片,每个小...
Hanio汉诺塔的递归及非递归实现
Hanoi汉诺伊塔 递归实现 赚个积分下资料
hanoi塔问题的递归算法
这个Hannoi塔游戏就是在原有的程序基础上增加了改变盘子数目功能、改变盘子大小功能、改变背景颜色功能、改变盘子颜色功能、计时器功能以及保存信息到文件功能,及背景音乐
java编写的汉诺塔源代码
Java解决递归汉诺塔问题、全排列问题,编码格式UTF-8,初级编程,递归例题