递归_汉诺塔算法

来源:互联网 发布:java调用http上传文件 编辑:程序博客网 时间:2024/04/29 18:41
package edu.daocao.hanoi;public class Hanoi {// 将n个盘子从x柱通过y柱移动到z柱private void hanoi(int n, char x, char y, char z) {//当n为1时,即只有一个盘子时,直接调用移动函数,将盘子移动到目标柱z//当n不为1时,第一步:将n-1个盘子从x柱通过z柱移动到y柱//  第二步:直接将x柱上剩余的那个盘子移动到z柱上//第三步:再将第一步移动到y柱上n-1个盘子移动到目标柱z柱上if (n == 1) {move(x, 1, z);} else {hanoi(n-1,x,z,y);move(x,n,z);hanoi(n-1,y,x,z);}}//显示移动过程private void move(char start, int no, char end) {System.out.println(start + "-->" + end);}//最初始的移动private void startmove(int n) {hanoi(n, 'A', 'B', 'C');}public static void main(String[] args) {Hanoi hanoi = new Hanoi();hanoi.startmove(3);}}



原创粉丝点击