这个最后输出,写成i-1,不太懂?

问题:已知不等式:1!+2!+ +m!<n,请编程对用户指定的n值计算并输出满足该不等式的m的整数解。

#include<stdio.h>
int main()
{
    unsigned long i=0,n,term=1,sum=0;
    printf("Please enter n:");
    scanf("%lu",&n);
    do
    {
        i++;
        term=term*i;
        sum=sum+term;
    }while(sum<n);
    printf("m<=%lu\n",i-1);
}


这里,printf()里为什么用i-1呢,不太懂?

i在跳出循环的时候其实sum已经>=n了不符合题目条件。

i在循环结束时多了一次,所以要减一