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;
    }
}


当我运行这段代码时,最后两个测试返回0,我知道它们应该是大数字,这是为什么?我如何算出最后两个的值?

最佳答案

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

09-28 09:10