之前的公式
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;
}
}
}
得到了最后想要的结果