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

转载于:https://www.cnblogs.com/haojun/p/5966308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值