惜缘


私信TA

用户名:lyhlyh

访问量:1278

签 名:

等  级
排  名 45819
经  验 321
参赛次数 1
文章发表 2
年  龄 0
在职情况 学生
学  校 zhong
专  业

  自我简介:

解题思路:递归实现


参考代码:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();//盘子的数量(n<=10)
        hanoi(n,1,2,3);
    }

    /**
     * 递归实现汉诺塔问题
     * @param n 盘子的数量
     * @param a 起始柱
     * @param b 中转柱
     * @param c 目标柱
     */
    private static void hanoi(int n,int a, int b,int c) {
        if(n == 1) {//递归的终止条件
            System.out.printf("Move %d from %d to %d\n",n,a,c);
        }else {
            hanoi(n-1, a, c, b);//将a柱子上的n-1个盘移到b柱子上
            System.out.printf("Move %d from %d to %d\n",n,a,c);
            hanoi(n-1, b, a, c);//将b柱子上的n-1个盘子移到c柱子上
        }
    }

}


 

0.0分

3 人评分

  评论区

太强了
2022-11-04 19:45:04
  • «
  • 1
  • »