汉诺塔详解

汉诺塔用到的就是典型的递归,当盘子数等于1的时候,直接可以从A—》C
否则的话就是把盘子通过借助 B,移动到C
当我们去推的时候,一定要注意n等于3,n等于2,n等于1,n等于2,n等于3,这个回溯的过程,代码中有推的部分,可以看下,蟹蟹
import java.util.Scanner;

public class Hannuota {
public static void pan(int n,char a,char b,char c){
if(n1){
System.out.println(a+"---->"+c);
}else{
pan(n-1,a,c,b);
System.out.println(a+"—>"+c);
pan(n-1,b,a,c);
}
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入盘子的数量”);
int a=scanner.nextInt();
pan(a,‘1’,‘2’,‘3’);
//注意:当盘子数大于3时,每次的pan()时,柱子会变动,拿3为例子:
/*
* 输入3,pan(3,1,2,3)n不等于1,pan(2,1,3,2)—》n 不等于1,
*注意:到这的时候,应该是套用上一个(2,1(a),3(b),2(c))//
* pan(1,1,2,3)—》n
1—>system.out.print(1—>3)
* 现在是回溯到n2的时候
* system.out.println(1—>2)—>pan(1,3,1,2)—>
* system.out.println(3—>2)
* 这特别注意,这要回溯到n
3时,—》system.out.println(1—>3)
* —>(2,2,1,3)
*
*/
}
}

发布了37 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43668119/article/details/90041848