总方法 计数型循环:
1.常用于处理已知循环次数的过程
2.控制循环变量每次都发生规律性变化(如递增或递减),并在到达约束条件时停止循环
3.计数型循环常用for语句
一.题意拆分:
1.求出一个数m的阶乘(累乘)
n=1(存放累乘结果的变量的初值),a为阶乘展开式的每一项的值,n*=a,累乘每一项a并存入n,那么n==m!
2.1!+..+n!的阶乘求和(累和)
k=0(存放每一项结果的变量的初值),b为每一项的值,k+=b,累和每一项b并存入k,那么
1!+..+n!==k
3.由以上两点可以知道2.中的b就是1.中的n的最终值,故1.+2.就能解决这个问题
4.要求m的值可以在1--n之间逐个递进,直到m=n时停止(循环),符合计数型循环的条件
#include <iostream>
using namespace std;
long long int j(int a)
{
long long int d= 1, b = 0, c = 1;//累和器初值为0 ;累乘器初值为1,循环控制变量为c(不可能一直乘下去的)
for (; c <= a; c++)
{
d *= c;//求每一次的阶乘,求n!的过程中会把小于n的阶乘全部求出来;
b += d;//把每一个阶乘累和;
}
return b;
}
int main()
{
int a;
cin >> a;
cout << j(a);
}
定义变量与函数为long long型保证我们输入一个大数时,这个结果不会造成溢出(即系统分配的内存不足以存放这个数,造成部分数无法存入),这样能输出我们想要的正确的值。