之前的公式
public class ArraySum
{
public static void main(String[]args){
sum(30);
System.out.print(sum(30));
}
public static int fun(int x){ //实现阶乘
if(x==1){
return 1;
}else{
return x*fun(x-1);
}
}
public static int sum(int x){ //实现累加
int sum=0;
if(x==1){
return 1;
}else {
sum=fun(x)+sum(x-1);
return sum;
}
}
}
发现运行的程序结果得到一个负数:所以应该是出现了数据溢出,这个时候采用
public class ArraySum
{
public static void main(String[]args){
sum(30);
System.out.print(sum(30));
}
public static long fun(long x){ //实现阶乘
if(x==1){
return 1;
}else{
return x*fun(x-1);
}
}
public static long sum(long
x){ //实现累加
long sum=0;
if(x==1){
return 1;
}else {
sum=fun(x)+sum(x-1);
return sum;
}
}
}
得到了最后想要的结果
博客探讨了在计算1!+2!+...+30!的和时遇到的数据溢出问题。原本使用整型导致计算结果为负数,通过将数据类型改为长整型,成功避免了溢出,从而得到正确的累加和。文章通过对比两种不同数据类型的程序实现,阐述了解决溢出的方法。
202

被折叠的 条评论
为什么被折叠?



