汉诺塔递归算法

折月煮酒 提交于 2020-11-24 05:29:12
import java.util.Scanner;

/**
 * 汉诺塔
 * 
 * @author JayChang
 * 
 */
public class HanoiResolve {
	/**
	 * 移动位置
	 * 
	 * @param positionA
	 * @param positionB
	 */
	public static void move(String positionA, String positionB) {
		System.out.println(positionA + " --> " + positionB);
	}

	/**
	 * 汉诺塔递归算法
	 * 
	 * @param num
	 * @param positionA
	 * @param positionB
	 * @param positionC
	 */
	public static void hanoi(int num, String positionA, String positionB,
			String positionC) {
		if (num == 1) {
			move(positionA, positionC);
		} else {
			hanoi(num - 1, positionA, positionC, positionB);
			move(positionA, positionC);
			hanoi(num - 1, positionB, positionA, positionC);
		}
	}

	public static void main(String[] args) {
		int num = new Scanner(System.in).nextInt();
		hanoi(num, "PositionA", "PositionB", "PositionC");
	}
}
 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!