算法分析与设计基础(1)汉诺塔问题

xiaoxiao2021-02-27  374

问题描述就不说了,自行百度。问题求解的思路本来想用文字描述一下的,结果发现知乎上有人发了个图,我觉得解释的十分清楚。下面贴图:

总结出来一共就三步:

将底盘n以上的环(n-1个)移动到B 将底盘n从A移动到C 将B上的环(n-1个)移动到C 下面贴上java实现代码:

import java.util.Scanner; public class HanoiTower { public static void process(int level, char from, char infor, char to){ if(level == 1){ System.out.println("从"+from+"移动盘子"+level+"号到"+to); } else{ process(level-1, from, to, infor); System.out.println("从"+from+"移动盘子"+level+"号到"+to); process(level-1, infor, from, to); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("请输入汉诺塔层数"); int level = input.nextInt(); process(level,'A','B','C'); } } 参考文献:

1.知乎:如何理解汉诺塔的递归 https://www.zhihu.com/question/24385418

转载请注明原文地址: https://www.6miu.com/read-1307.html

最新回复(0)