Java递归代码

tla*_*uer 0 java

public class Temp {
    public static void main(String[] args) {
        System.out.println(recursion(1, 100));
        System.out.println(recursion(4, 5));
        System.out.println(recursion(99, 100));
        System.out.println(recursion(100, 100));
    }

    public static int recursion(int m, int n) {
        int number = 0;
        if (m == 1) {
            number = ((2 * n) - 1);
        } else {
            number = 2 * recursion(m - 1, n - 1);
        }
        return number;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这段代码时,最后两个测试返回0,我知道它们应该是大数字,这是为什么?我怎么能弄清楚最后两个的价值?

Daw*_*ica 7

你正在遇到算术溢出.一个int只能存储-2 ^ 31和2 ^ 31-1之间的值.要处理这么大的数字,你需要一个更合适的数据类型,比如BigInteger.