long Jiecheng(int i) { if(i == 1) return 1; else return i * Jiecheng(i-1); }解决这个溢出的问题
时间: 2024-02-25 17:52:26 浏览: 52
内存溢出解决
这个函数可能会因为计算结果超出long类型的范围而出现溢出的问题。为了解决这个问题,我们可以使用Java中的BigInteger类来进行计算。修改后的代码如下:
```
import java.math.BigInteger;
public class Main {
public static BigInteger Jiecheng(int i) {
if (i == 1)
return BigInteger.ONE;
else
return BigInteger.valueOf(i).multiply(Jiecheng(i - 1));
}
public static void main(String[] args) {
int n = 100;
System.out.println(Jiecheng(n));
}
}
```
在这个例子中,我们使用BigInteger.ONE来代替1,使用BigInteger.valueOf(i)来代替i,使用multiply方法来代替乘法操作。这样可以避免因为计算结果超出long类型的范围而导致的溢出问题。
阅读全文