本文共 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/