#include <stdio.h>
int main()
{
int n = 0;
scanf_s("%d", &n);
int i = 0;
int ret = 1;
int sum = 0;
int j = 0;
for (j = 1;i <= n;j++)
{
ret = 1;//所以改正方法:每次算完一个数的阶乘后,要把ret置为1
for (i = 1;i <= j;i++)
{
ret *= i;//ret接收阶乘,在算3的阶乘时出现问题应该是6,但显示是12,说明ret在每次计算时保留了上一次运算结果
}
sum += ret;
}
printf("%d\n", sum);//输出15说明代码错误此时要调试找到问题
return 0;
}
在算3的阶乘时出现问题应该是6,但显示是12,说明ret在每次计算时保留了上一次运算结果
此时运行结果正确: