n!求和:嵌套循环和单重循环
嵌套循环:
#include<stdio.h>
int main() {//n! 之和 嵌套循环
int i, j, n;
long p = 0;
long sum = 0;//sum的值可能会很大,要设为长整形
printf("请输入n:\n");
scanf("%d",&n);
for (i = 1; i <= n;i++) {
p = 1;//每次累乘之前,将p初始化为1
for (j = 1; j <= i;j++) {
p = p * j;
printf("p=%d\n",p);//可查看p的变化
}
printf("j=%d\n",j);//可查看j的变化
sum = sum + p;
printf("i=%d\n", i);//可查看i的变化
}
printf("i=%d\n", i);
printf("%d!相加之和为:%ld\n",n,sum);//sum输出格式为长整形
}
单重循环:
int main() {//n!之和 单重循环
int i, n;
long sum = 0, p = 1;
printf("请输入n:\n");
scanf("%d",&n);
for (i = 1; i <= n;i++) {
p = p * i;
sum = sum + p;
printf("%d!的阶乘之和为:%ld\n", i, sum);//可查看i!的值
}
printf("%d!的阶乘之和为:%ld\n",n,sum);//sum输出格式为长整形
}
显然,相对于嵌套循环实现的程序而言,用单重循环执行效率更高(循环次数大大减少)。