关于数据的溢出的影响。程序功能实现:1!+2!+...+30!的求和

博客探讨了在计算1!+2!+...+30!的和时遇到的数据溢出问题。原本使用整型导致计算结果为负数,通过将数据类型改为长整型,成功避免了溢出,从而得到正确的累加和。文章通过对比两种不同数据类型的程序实现,阐述了解决溢出的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的公式

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

得到了最后想要的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值