zoukankan      html  css  js  c++  java
  • 03-JAVA方法

    答:我发现这两个方法的返回类型以及参数类型不一样。

    package 汉诺塔问题;
    
    /*
    *汉诺塔问题
    *作者:徐浩军 日期:16.10.16 天气:晴
    */
    public class TowersOfHanoi { //用于递归移动盘子 public static void solveTowers( int disks, int sourcePeg, int destinationPeg, int tempPeg ) //第一个参数的意思是盘子的总数,第二个参数的意思是起始盘,第三个参数是目标盘,第四个参数是辅助盘 { // 当只有一个盘子的时候直接从起始盘移动到目标盘 if ( disks == 1 ) { System.out.print( sourcePeg+" -->"+destinationPeg+ " "); return; } // 终止条件
    //递归步骤:首先把N-1个盘子从起始盘借助目标盘移动到辅助盘 solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); // 把起始盘上的最后一个盘子移动到目标盘上 System.out.print( sourcePeg+" -->"+destinationPeg+ " "); // 从辅助盘上把N-1个盘子移动到目标盘上 solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg ); } // 结束 public static void main( String[] args ) { int startPeg = 1; // 起始盘 int endPeg = 3; // 目标盘 int tempPeg = 2; // 辅助盘 int totalDisks = 3; // 盘子的总数 // 进行移动 solveTowers( totalDisks, startPeg, endPeg, tempPeg ); } // main结束 } //类终止

    程序设计思路:

    这个问题很明显要用递归的思想来解决问题。

    首先定义一个函数用来进行递归操作,

    参数有盘子的总数N,起始柱子A,目标柱子B,以及辅助柱子C。

    递归实现:先把A上的N-1个盘子移到B上,然后把A上的第N个盘子移到C上,最后把B上的N-1个盘子移到C上,

    通过递归,这个问题解决了。

    首先终止条件是当只有一个或者零个字符的时候,他是回文的。通过递归,先判断第N个与第一个,在判断第N-1个与第二个。最后就可以解决这个问题。

  • 相关阅读:
    Electron踩坑记录
    TypeScript实现设计模式——生成器模式
    在express中使用ES7装饰器构建路由
    微信小程序下载文件(非图片),并校验扩展名。
    防抖与节流
    yarn
    spark
    docker php-fpm中安装GD库
    thinkphp6 多应用路由遇坑记
    CentOS 7 开启SSH远程登录
  • 原文地址:https://www.cnblogs.com/haojun/p/5966308.html
Copyright © 2011-2022 走看看