public class Demo {
public static void main(String[] args){
//盘子数为4
System.out.println(move(4));
}
//移动使用递归,移动分为三步
//第一步将n-1个盘子移到第二个柱子,f(n-1)步
//第二步将最大的盘子移到第三个柱子,1步
//第三步将第二个柱子的n-1个盘子再移到第三个柱子f(n-1)
//此时最终的部数就是,f(n) = 2*f(n-1)+1;
public static int move(int n){
if(n == 1){
return 1;
}
return 2*move(n-1)+1;
}
}
三个柱子的汉诺塔问题
最新推荐文章于 2023-04-24 18:57:32 发布