栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言只用一个for循环实现阶乘和

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言只用一个for循环实现阶乘和

什么是阶乘和?

比如  5的阶乘和  =  1!+2!+3!+4!+5!=  1+2+6+24+120 = 153

常规算法f1 需要两个for循环,那么如何只使用一层循环来求阶乘和呢?

#define _CRT_SECURE_NO_WARNINGS

#include 


//常规算法(两个for循环)
long  f1(long n)
{

	long sum = 0;
	long tem = 1;
	for (int i = 0; i < n; i++)
	{
		tem = 1;
		for (int j = 1; j <= i + 1; j++)
		{
			tem *= j;
		}
		sum += tem;
	}

	return sum;
}


// 只用一个for循环实现阶乘和

long  f2(long n)
{

	long sum = 0;
	long tem = 1;

	//后一个阶乘 = 前一个阶乘 x 当前数
	for (int i = 1; i <= n; i++)
	{
		tem *= i;
		sum += tem;
	}

	return sum;
}



 

void  main(int argc, char* argv[])
{
	printf("n请输入一个整数:");

	long n;
	scanf("%d" ,&n);
	printf("n %d的阶乘和:%d n",n, f1(n)  )  ;
	printf("n %d的阶乘和:%d n", n, f2(n));
}

看代码执行效果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号