题目链接:
解题思路:
利用双层 for循环
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int end = 0;//该变量只能在外层循环外
for(int i = 1;i <= data;i++)//注意外层循环中i的初始值与条件
{
int tmp = i;
int sum = 1;//该变量的位置只能在外层循环里,内层循环之外
for(int j = 0;j < i;j++)//注意内存循环的条件
{
sum = sum * tmp;
tmp--;
}
end = end + sum;
}
cout << end;
return 0;
}
【变式题目】:求阶乘差 1!- 2! - 3! - ....... - n!
题目链接:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int data = 0;
cin >> data;
int end = 1;//与求阶乘和时该变量的初始值不同
for(int i = 2;i <= data;i++)//与阶乘和不同的地方
{
int tmp = i;
int sum = 1;
for(int j = 1;j <= i;j++)//与阶乘和不同的地方
{
sum = sum * tmp;
tmp--;
}
end = end - sum;//与阶乘和不同的地方
}
cout << end;
return 0;
}