• 汉诺塔递归算法


    一、程序设计思想:

    从左到右 A  B  C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.有3个盘子, 大中小号, 越小的越在上面, 从上面给盘子按顺序编号peg1 、peg2 、peg3,peg1上放置需要移动的盘,peg2用作移动辅助盘,peg3当做移动后的盘。

    设置两个函数Hanoi(int n,String peg1,String peg2,String peg3)递归进行操作;move(String c1,String c2)用来输出移动步数。

    二、程序流程图:

     

    三、源程序:

    package homework2;

     

    import java.util.Scanner;

     

    public class Hanoi {

             static int count=0;

     

             public static void main(String[] args) {

                       // TODO Auto-generated method stub

                       int n;

                       System.out.println("输入你想移动的盘子数目:");

                       Scanner in=new Scanner(System.in);

                       n=in.nextInt();

                       System.out.println("移动"+n+"个盘子需要的步数为:");

                       hanoi(n,"peg1","peg2","peg3");

                       System.out.println("总共需要移动"+count+"步");

     

             }

             public static void hanoi(int n,String peg1,String peg2,String peg3){

                       //将peg 1借助peg2,移动到peg3

                       if(n==1) {

                                move(peg1,peg3);

                                count++;

                       }

                       else {

                                hanoi(n-1,peg1,peg3,peg2);

                                move(peg1,peg3);

                                hanoi(n-1,peg2,peg1,peg3);

                                count=count+1;

                       }

             }

             public static void move(String c1,String c2) {

                       System.out.println(c1+"-->"+c2);

             }

     

    }

    四、实现结果截图:

     

  • 相关阅读:
    localhost/127.0.0.1:8080
    android要注意的小问题
    2016年度工作计划
    2016年度计划总结
    竞品分析的思路
    《竞品调研:抄也是一门学问》学习总结
    书籍名单
    2015年度计划-总结
    以前的博客
    和老板沟通学习记录
  • 原文地址:https://www.cnblogs.com/somedayLi/p/7664422.html
Copyright © 2020-2023  润新知