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

posted @ 2016-10-16 12:01  Kefi123  阅读(241)  评论(0编辑  收藏  举报