C语言 - 计算n的阶乘(n!)
发布日期:2021-05-07 10:11:55 浏览次数:11 分类:原创文章

本文共 851 字,大约阅读时间需要 2 分钟。

一、

4! = 1 * 2 * 3 * 4
5! = 1 * 2 * 3 * 4 * 5

#include<stdio.h>#pragma warning:(disable:4996)int main(){   	int i = 0;	int ret = 1;	int n = 0;	scanf("%d", &n);	for(i=1; i<=n; i++)	{   		ret *= n;//累计相乘	}	printf("%d\n", ret);	return 0;}

二、

1! + 2! +3! + …

//思路://1		 +//1*2    +//1*2*3  +//... ...#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){   	int i = 0;	int j = 0;	int ret = 1;	int sum = 0;	int n = 0;	scanf("%d", &n);	for(i=1; i<=n; i++)	{   		ret = 1;//在求下一个阶乘时重新赋值,避免把上一阶乘的值与下一阶乘的值重复相乘		for(j=1; j<=i; j++)		{   			ret *= j;			sum += ret;		}	}	printf("%d\n", sum);	return 0;}

上面这种写法时间复杂度高,效率低。优化如下:

//思路://1*1  = 1!//1!*2 = 2!//2!*3 = 3!//... ...#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){   	int i = 0;	int ret = 1;	int sum = 0;	int n = 0;	scanf("%d", &n);	for(i=1;i<=n;i++)	{   		ret *= i;		sum += ret;	}	return 0;}
上一篇:C语言 - 有序数组查找数字
下一篇:C语言 - 分支与循环

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月12日 10时17分51秒