public class collatzpow {

    public static int collatz(int n) {

        StdOut.print( n + " ");
        if (n == 1) return 0;
        if (n% 2 == 0) return collatz(n/2);
        else return collatz(3*n + 1);

    }

    public static void main(String[] args) {

        int n= Integer.parseInt(args[0]);
            StdOut.println(collatz(7));
    }
}


我想设置一个全局变量来计算程序调用递归的时间。我知道数字7叫它17次。

有人告诉我这很容易,但是我对此有点挣扎。

最佳答案

只需在类范围内声明一个静态int变量,并在每次调用该方法时递增即可。

public class collatzpow {

public static int count = 0;
public static PrintStream StdOut = System.out;

public static int collatz(int n) {
    ++count;
    StdOut.print(n + " ");
    if (n == 1) return 0;
    if (n % 2 == 0) return collatz(n / 2);
    else return collatz(3 * n + 1);

}

public static void main(String[] args) {

    int n = Integer.parseInt(args[0]);
    StdOut.println(collatz(7));
    System.out.println(count);
}
  }

关于java - 设置全局变量以计算递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33325580/

10-10 14:38