为什么最后的ret多乘了个2呢,求解

大家帮我看一下啊,最后一次循环应该是ret = reti,所以应该是23=6不是吗,为什么是212*3?

    int i = 0;
int n = 0;
int ret = 1;
int sum = 0;

for (n = 1; n <= 3; n++)
{
    for (i = 1; i <= n; i++)
    {
        ret = ret*i;
    
    }
    sum = sum + ret;

}
//ret=1*1=1
//ret=1*1*2=2
    //ret=2*1*2*3=12

printf("%d", sum);

第三次内循环会循环3次啊,所以是ret = 2 * 1 * 2 * 3的效果

因为n=2时,ret的值为2了,最后一次(n=3)时,i=1,2,3,循环一次结果就是这样了。