7-13 求阶乘序列前N项和

本题要求编写程序,计算序列 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是全局变量,但是递归的结果多算了一点,没有完善好。

原文地址:https://www.cnblogs.com/mapone/p/11938237.html