先来介绍一种基本的算法
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int n = 0;
scanf("%d", &n);
int sum = 0;
for (i = 1; i <= n; i++)
{
//每次进行新的阶乘的时候注意要将ret初始化为1
int ret = 1;
for (j = 1; j <= i; j++)
{
ret = ret * j;
}
sum = sum + ret;
}
printf("%d", sum);
return 0;
}
上面的那个算法还是有一定的缺陷的,比如我们在计算4!时只需要给3! * 4就可以了,没必要再从1开始乘到4
优化:
int main()
{
int i = 0;
int n = 0;
scanf("%d", &n);
int ret = 1;
int sum = 0;
for (i = 1; i <= n; i++)
{
ret = ret * i;
sum = sum + ret;
}
printf("%d", sum);
return 0;
}
感谢观看
这篇博客介绍了如何优化阶乘算法,通过避免重复计算提高效率。原始算法在计算阶乘时从1乘到目标数,而优化后的算法在每次迭代中累加前一阶乘值,减少了计算量。这种方法在处理大数值时尤其有效。

被折叠的 条评论
为什么被折叠?



