汉诺塔算法代码实现
【摘要】 package com.aaa.recursion;public class Hanoi { public static void main(String[] args) { long start=System.currentTimeMillis(); move(20,"A","B","C"); long end=System.currentT...
package com.aaa.recursion;
public class Hanoi {
public static void main(String[] args) {
long start=System.currentTimeMillis();
move(20,"A","B","C");
long end=System.currentTimeMillis();
System.out.println("汉诺塔时间:");
System.out.println((end-start)/1000+"秒");
}
/**
* 最开始:B中介->C中介-->A中介;不断递归调用;
* @param dish 盘子个数
* @param from 初始塔座
* @param temp 中介塔座
* @param to 目标塔座
*/
private static void move(int dish, String from, String temp,String to) {
if(dish==1)
System.out.println("\t\t将盘子"+dish+"从塔座"+from+"移动到"+to);
else{
//超过1的时候,递归调用方法本身;A为初始目标,B为目标,C:中介
move(dish-1,from,to,temp);
System.out.println("将盘子"+dish+"从塔座"+from+"移动到"+to);
//继续移动:A为中介,B初始塔座,C:目标;
move(dish-1,temp,from,to);
}
}
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)