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,郁闷.......

解决方案 »

  1.   

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

  2.   

    自己搞定了,不是你说的那样,要把tt类型改成double,呵呵
      

  3.   

    把s=1/e.tt(j)改成s=1.0/e.tt(j)也成,“/”两侧的都是整型时,运算结果就是整数,不考虑小数的情况,哈哈,谢谢给分,不过我说的也没错