描述
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
输入
n
输出
和
输入样例 1
5
输出样例 1
153
输入样例 2
19
输出样例 2
128425485935180313
代码一(如下):非递归方法
#include <iostream>
using namespace std;
int main()
{
int n, i;
long long int Sn = 0, t = 1;
cin >> n;
for (i = 1; i <= n; i++)
{
t *= i;
Sn += t;
}
cout << Sn << endl;
return 0;
}
代码二(如下):函数调用
#include <iostream>
using namespace std;
long long jiecheng(int);
int main()
{
int n;
long long int Sn=0;
cin >> n;
int i;
for (i = 1; i <= n; i++)
{
Sn+=jiecheng(i);
}
cout << Sn;
return 0;
}
long long jiecheng(int a)
{
int i;
long long int s=1;
for (i = 1; i <= a; i++)
{
s=s*i;
}
return s;
}
代码三(如下):内含递归调用
#include <iostream>
using namespace std;
long long jiecheng(int);
int main()
{
int n;
long long int Sn=0;
cin >> n;
int i;
for (i = 1; i <= n; i++)
{
Sn+=jiecheng(i);
}
cout << Sn;
return 0;
}
long long jiecheng(int a)
{
int i;
long long int s;
if (a == 1)s = 1;
else s = jiecheng(a - 1) * a;
return s;
}
问题点:
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。