汉诺塔算法(Java版)

/**
 * 汉诺塔递归:每次只能移动一个长方形,并且大的长方形不能在小的长方形之上
 * 算法:递归
 * 第一步:
 *      把n-1个模块 从塔1移动到塔2
 *      把第n个模块 从塔1移动到塔3
 * 第二步:
 *      把n-1个模块 从塔2移动到塔3
 */

import java.util.Scanner;

public class Hanoi {
    public static int count;

    public static void main(String[] arg) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        hanoi(n, "A塔", "B塔", "C塔");
        System.out.println("总共:"+count+"步骤");
    }

    public static void hanoi(int n, String a, String b, String c) {
        if (n == 1) {
            System.out.println(a + "--->" + c);
        }else {
            hanoi(n - 1, a, c, b);
            System.out.println(a + "--->" + c);
            hanoi(n - 1, b, a, c);

        }
        count++;
    }

}

原文地址:https://www.cnblogs.com/saysayzhou/p/14508145.html