1.观看一下代码,发现了什么特殊之处?
返回类型以及参数类型不一样。
2.解决汉诺塔问题
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 );
}
}
程序思路:
定义一个函数用来进行递归操作,参数有盘子的总数N,起始柱子A,目标柱子B,辅助柱子C。
实现方法:先把A上的N-1个盘子移到B上,然后把A上的第N个盘子移到C上,最后把B上的N-1个盘子移到C上,递归完成。
3.通过递归判断字符串是否回文
通过递归,先判断第N个与第一个,在判断第N-1个与第二个。即可解决这个问题。