3

我已经为河内塔游戏编写了代码。我不知道如何为这个程序实现一个计数器,它运行了多少次。任何帮助都感激不尽。

public class MainClass {
  public static void main(String[] args) {
    int nDisks = 3;
    doTowers(nDisks, 'A', 'B', 'C');
  }

  public static void doTowers(int topN, char from, char inter, char to) {
    if (topN == 1){
      System.out.println("Disk 1 from " + from + " to " + to);
    }else {
      doTowers(topN - 1, from, to, inter);
      System.out.println("Disk " + topN + " from " + from + " to " + to);
      doTowers(topN - 1, inter, from, to);
    }
  }
}
4

1 回答 1

10

doTowers将from的返回类型更改voidint,并将返回值设置为:

  1. 如果topN == 1, 返回 1;
  2. 否则返回二doTowers()加 1 的总和。

逻辑类似于问题的算法。玩得开心!

您也可以使用静态全局变量,但这可以说是不好的编程风格。

于 2012-04-23T20:38:27.093 回答