n!求和:嵌套循环和单重循环

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输出格式为长整形
}

显然,相对于嵌套循环实现的程序而言,用单重循环执行效率更高(循环次数大大减少)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值