求阶乘不等式,想问下为什么这样写答案是错的

//想知道为什么这样写是错的
#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;
    }
}


img

你把return s;写到for循环里面了,这循环只会走一次啊
此外,当while退出时,m已经比n大了,所以输出之前还要-1

这肯定不对啊,当while退出时,sum已经大于n了啊,你应该printf("%d",m-1);