日期:2014-05-20  浏览次数:20801 次

有关计算数学常数e的一个问题?
class   E{
static   int   tt(int   k){
if(k==0   ||   k==1)
return   1;
else  
return   k*tt(k-1);
}
}


public   class   F{
public   static   void   main(String   args[]){
int   i=10;
if(args.length> 0)
i=Integer.parseInt(args[0]);
int   j;
double   sum=1.0;
double   s;
E   e=new   E();
for   (j=1;j <=i;j++){
s=1/e.tt(j);
sum=sum+s;
}
System.out.print(sum);
}
}

为什么调试出来值总是2.0   ?
我把i的值改成其它数,调试出来还是2.0,郁闷.......

------解决方案--------------------
你的逻辑本来就是这样的,当tt方法恒返回大于1的整数时1/e.tt(j)的计算结果为0,当然就只有1.0加上唯一的tt方法返回1时候的1,就等于2.0,算多少次都一样,“/”是整除运算,你得弄清楚,它仅返回运算结果的商