java 算法 递归 汉诺塔(计算移动次数)
Posted //我是小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 算法 递归 汉诺塔(计算移动次数)相关的知识,希望对你有一定的参考价值。
汉诺塔
问题描述
汉诺塔大家都知道,现有三根柱子(A,B,C),在A柱上有n个圆盘,从小到大从上到下依次叠放,现在要求你计算出这n个圆盘从A盘移动到C盘最少需要多少步。
重温一下汉诺塔规则:
1,每次只能移动一个圆盘;
2,任何时刻都不能将一个较大的圆盘压在较小的圆盘之上;
import java.util.Scanner;
public class Main {
static int count=0;//用于计数
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
f(sc.nextInt());
System.out.println(count);
}
public static void f(int n) {
if(n==1) {//出口,只剩一个圆盘时只需要再移动一步,然后return整个函数
count++;
return;
}
f(n-1);//把n-1个盘子移动到辅助柱
count++;//把最下面最大的盘子移动到C柱,因为只有一步所以,步骤++
f(n-1);把n-1个盘子移动到辅助柱
}
}
以上是关于java 算法 递归 汉诺塔(计算移动次数)的主要内容,如果未能解决你的问题,请参考以下文章