例源码:是关于求满足1!+2!+...+n!<=9999最大的n;
class BiggestNum{
public static void main(String args[]){
function();
}
static void function(){
int sum=0,j=1,i;
while(sum<=9999){
for (i=1;sum<=9999;i++){//注意的问题i++是在for中全部语句执行完,才执行它。
j*=i;
sum+=j;//当i=7时,sum=5913;然后i+1=8,进入for中,sum=46233,然后i再加1,变成9.跳出for循环。最后的i=9.所以最后应该是i减去2
//System.out.print(i+" ");
//System.out.println(sum);测试语句
}
System.out.println("满足1!+2!+...+n!<=9999最大的n为:"+(i-2));
}
}
}
开始做的时候总找不出问题在哪里,最后测试了一下,问题出在for循环最后一个i++中;i++是在for中全部语句执行完,才执行它。当i=7时,sum=5913;然后i+1=8,进入for中,sum=46233,然后i再加1,变成9.跳出for循环。最后的i=9.所以最后应该是i减去2。希望以后大家在写程序时能注意到这点!