本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。
输入格式: 输入在一行中给出一个不超过12的正整数N。
输出格式: 在一行中输出整数结果。
输入样例: 5
输出样例: 153
代码:
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int dfs(int a)
{
int x=0;
if(a==0||a==1)
return 1;
else x=a*dfs(a-1);/
return x;
}
int main(int argc, char** argv) {
int a,sum=0;
cin>>a;
for(int i=1;i<=a;i++)
sum+=dfs(i);
cout<<sum;
return 0;
}
//有两个问题
1、关于递归时传入参数:不能改变最初传入参数的值,
例如、a--
因为一个函数里面的参数一旦改变,会使整个函数的计算过程中a的值会随着改变,导致结果不对
2、我最初的思路是定义一个全局的静态变量,来记录每一次递归所产生的结果,然后实现累加
即x+=a*dfs(a),其中a是全局变量,但是递归的结果多算了一点,没有完善好。