//想知道为什么这样写是错的
#include
int isum(int max);
int main()
{
int m = 1, sum = 0, n;
scanf("%d", &n);
while (sum <= n)
{
sum += isum(m);
m++;
}
printf("%d",m);
}
int isum(int max)
{//求阶乘的函数
int i=1,s=1;
for (i = 1; i<=max; i++)
{
s = i * s;
return s;
}
}
你把return s;写到for循环里面了,这循环只会走一次啊
此外,当while退出时,m已经比n大了,所以输出之前还要-1
这肯定不对啊,当while退出时,sum已经大于n了啊,你应该printf("%d",m-1);