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

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个与第二个。最后就可以解决这个问题。

最新文章

  1. 总结libevent安装方法
  2. 使用Gogs搭建Git服务器
  3. shell命令date
  4. Mac下使用Automator实现隐藏和显示
  5. asp.net 代码 注意点
  6. BLP模型
  7. JavaScript DOM高级程序设计 7.向应用程序加入Ajax--我要坚持到底!
  8. Moving a Subversion Repository to Another Server
  9. HTTP协议(超文本传输协议)
  10. linux脚本:shell, 判断输入参数的个数(命令行)
  11. 八、oracle 分页
  12. JS画图之七【时钟】
  13. JAVA_SE基础——43.抽象类
  14. python基础自学 第五天(附带视频和相关资源)
  15. 志愿者招募 HYSBZ - 1061(公式建图费用流)
  16. OneAPM大讲堂 | Java 异常日志记录最佳实践
  17. Arduino IDE for ESP8266 项目(1) 点亮灯+按键LED+pwm
  18. django中的时区设置TIME_ZONE,USE_TZ
  19. day39 算法基础
  20. MVVM 事件转命令1

热门文章

  1. EXCEL datatable 根据列名自动写入到相应属性、字段或列中
  2. android学习笔记57——Service_2
  3. Hadoop学习11--Ha集群配置启动
  4. Notepad++快捷键&正则表达式替换字符串&插件
  5. [MongoDB] 高可用架构方案
  6. 动画_ _ Android应用开发之所有动画使用详解
  7. ucenter 整合外部网站,实现登录等操作
  8. bootstrap-列表组
  9. 114、Android禁止ViewPager的左右滑动
  10. 创建线程方式-GCD