我正在开发一个简单的Hanio java程序塔。 我让它为我提供了用户输入的磁盘数量的所有步骤。
但现在我陷入困境我想在最后放一个计数器给用户一个明确的步骤而不是让他们全部计算
这是我的代码,如果你可以帮助我,
添加一个很棒的计数。
任何帮助都会很棒
import java.util.Scanner;
public class Hanoi{
public static void Han(int m, char a, char b, char c){
if(m>0){
Han(m-1,a,c,b);
System.out.println("Move disc from "+a+" to "+b);
Han(m-1,b,a,c);
}
}
public static void main(String[]args){
Scanner h = new Scanner(System.in);
System.out.println("How many discs : ");
int n = h.nextInt();
Han(n, 'A', 'B', 'C');
}
}
答案 0 :(得分:0)
简单的方法是使用这样的静态变量:
import java.util.Scanner;
public class Hanoi{
static int stepsCounter = 0; // new Code here.
public static void Han(int m, char a, char b, char c){
if(m>0){
stepsCounter++; // new Code here.
Han(m-1,a,c,b);
System.out.println("Move disc from "+a+" to "+b);
Han(m-1,b,a,c);
}
}
public static void main(String[]args){
Scanner h = new Scanner(System.in);
int n;
System.out.println("How many discs : ");
n = h.nextInt();
Han(n, 'A', 'B', 'C');
System.out.println("Steps : " + stepsCounter); // new Code here.
}
}
答案 1 :(得分:0)
您可以返回计数,而不是引入静态变量(除其他问题之外,不是线程安全的):
public static int Han(int m, char a, char b, char c){
int count = 0;
if(m>0){
count += Han(m-1,a,c,b);
System.out.println("Move disc from "+a+" to "+b);
count++;
count += Han(m-1,b,a,c);
}
return count;
}