算法1:
题目:汉诺塔(修改版,每一步必须经过中间,比如:想要左->右,要左->中,中->右来实现),通过递归实现
{代码}
/**
* 汉诺塔(修改版,每一步必须经过中间,比如:想要左->右,要左->中,中->右来实现),通过递归实现
*/
public class Hanoi {
public int hanoiProbleml(int num,String left,String mid,String right){
if(num<1){
return 0;
}
return process(num,left,mid,right,left,right);
}
/**
*递归方法的实现(个人感觉有点难推导)
* @param num 总共塔的层数
* @param left
* @param mid
* @param right
* @param from 初值为left
* @param to 初值为right
* @return 步数
*/
public int process(int num,String left,String mid,String right,String from,String to){
if(num == 1){//如果只有1层
if(from.equals(mid) || to.equals(mid)){
System.out.println("Move 1 from " +from+" to +"+to);
java实现汉诺塔(递归和非递归)
最新推荐文章于 2023-09-26 15:45:00 发布