求问ret为什么还要在第一层嵌套里初始化啊
ret=ret*i中,等号右边ret是前一位数的阶乘,再乘以i不就是等号左边ret该数的阶乘了吗,如果ret初始化等于1之后等号右边不就一直是1了吗😢

求问ret为什么还要在第一层嵌套里初始化啊
ret=ret*i中,等号右边ret是前一位数的阶乘,再乘以i不就是等号左边ret该数的阶乘了吗,如果ret初始化等于1之后等号右边不就一直是1了吗😢

对每一个 n 计算阶乘,ret 需要每次置位为 1,才能正确的计算出每一个 n! 。
其实代码里第二层的for(i= 1; i <= n; i++) 循环可以省略,改为这样即可:
#include <stdio.h>
int main()
{
int i = 1, n = 0, ret = 1, sum = 0;
for (n = 1; n <= 10; n++)
{
//ret = 1;
//for (i = 1; i <= n; i++)
//{
ret = ret * n; // 修改
//}
sum = sum + ret;
}
printf("%d", sum);
return 0;
}