Java求满足1!+2!+3!…+n!<=9999的最大整数n,为什么我算的一直是6,答案应该是7

public class ans
{
public static void main(String[] args)
{
int n,i;
int sum=0;
int j=1;
for(n=1;sum<=9999;n++)
{
for(i=1;i<=n;i++)
{
j=j*i;
}
sum=sum+j;
}
System.out.println(n);
}
}
代码到底是哪里出了问题啊?

因为你的J计算完没有重置,而且循环条件也有问题。

int n,i;
int sum = 0;
int count = 0;
int j=1;
for(n=1;sum<=9999;n++)
{
j = 1;
for(i=1;i<=n;i++)
{
j=j*i;
}
if ((count = count + j) < 9999)
{
sum = sum + j;
}
else
{
n--; //到这的时候SUM已经大于9999了 但是n已经加1了 要减回来
break;

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-03
public class qiuN {
public static void main(String[] args) {
int n=1;
int sum = 0;
while(sum<=9999){
if ((sum + getFac(n)) < 9999){
sum = sum + getFac(n);
n++;
}
else {
break;
}
}
System.out.print(n-1);
}
public static int getFac(int m) {
if (m == 1) {
return 1;
} else {
return m * getFac(m - 1);
}
}
}
相似回答