博客
关于我
C语言 - 计算n的阶乘(n!)
阅读量:330 次
发布时间:2019-03-04

本文共 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;}

转载地址:http://iqbe.baihongyu.com/

你可能感兴趣的文章
文本情感分类
查看>>
Python模块_os文件_目录方法
查看>>
部署kuboard3 管理工具
查看>>
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
查看>>
Algorithms Unlocked
查看>>
python中的map( )函数及lambda()函数简介
查看>>
SQL Sever 学习笔记三——聚合查询
查看>>
深度优先遍历(DFS)和广度优先遍历(BFS)
查看>>
LeetCode之二叉树的所有路径(257)、路径总和(112、113、437)、二叉树的直径(543)
查看>>
轮播图——旋转木马(Jquery)
查看>>
普通平衡树板子
查看>>
操作DOM(二):删除节点、、复制节点、替换节点
查看>>
vue(7):表单输入绑定
查看>>
JSP内置对象:操作cookie、session对象
查看>>
【数算-27】多路查找树【了解】
查看>>
【数算-31】【十大常用算法-03】动态规划算法与背包问题
查看>>
【SE-02】多线程-02
查看>>
$set的使用(视图不能实时更新)
查看>>
Spring知识小汇(6)——Bean的自动装配
查看>>
一、硬件防火墙
查看>>