public class Test
{
public long fsum(int m)
{
long sum =0;
if(m<0)
{
System.out.println("M必须大于零"); }
else if (m==1)
{
sum =1;
}
else
{
sum= this.fsum(m-1)+m;
}
return sum; }
public static void main (String [] args)
{
long start=System.currentTimeMillis();
Test test= new Test();
System.out.println(test.fsum(9000));
long start2=System.currentTimeMillis()-start;
System.out.println(start2);
}}
请问针对这种问题,能有什么办法来处理?现在我已经将返回值的类型变为long了,但是任然不够,那应该怎么处理?
{
public long fsum(int m)
{
long sum =0;
if(m<0)
{
System.out.println("M必须大于零"); }
else if (m==1)
{
sum =1;
}
else
{
sum= this.fsum(m-1)+m;
}
return sum; }
public static void main (String [] args)
{
long start=System.currentTimeMillis();
Test test= new Test();
System.out.println(test.fsum(9000));
long start2=System.currentTimeMillis()-start;
System.out.println(start2);
}}
请问针对这种问题,能有什么办法来处理?现在我已经将返回值的类型变为long了,但是任然不够,那应该怎么处理?
楼主【hl87109881】截止到2008-07-17 13:20:09的历史汇总数据(不包括此帖):
发帖的总数量:5 发帖的总分数:140 每贴平均分数:28
回帖的总数量:7 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:5 未结的总分数:140
结贴的百分比:0.00 % 结分的百分比:0.00 %
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
照道理1加到9000不会超出long的范围啊
我试了下可以加到1000000都不溢出的(使用jdk默认的栈大小)
else if (m==1)
{
sum =1;sum+=1;
}