Java案例:汉诺塔问题

Java案例:汉诺塔问题

《Java案例:汉诺塔问题》

游戏规则:

(1)一次只能移动一个环
(2)小环必须在大环之上
(3)所有环从A柱移到C柱



1、创建TestHanoi类

《Java案例:汉诺塔问题》

package recursion; package net.hw.recursive; /** * Created by howard on 2017/11/21. */ public class TestHanoi { private static long step; public static void main(String[] args) { hanoi(3, 'A', 'B', 'C'); } /** * @param n 铁饼个数 * @param x 起点位置 * @param y 中间位置 * @param z 终点位置 */ public static void hanoi(int n, char x, char y, char z) { if (n == 1) { move(x, z); } else { hanoi(n - 1, x, z, y); move(x, z); hanoi(n - 1, y, x, z); } } public static void move(char p1, char p2) { step++; System.out.println("Step " + step + ": " + p1 + " -> " + p2); } } 

2、运行结果

《Java案例:汉诺塔问题》



当铁饼数n=3,移动次数=2^3-1=7


可以测试一下,当铁饼数n=64时,移动次数有多大。

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/howard2005/article/details/79322402
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞