思路:两次递归,一次算阶乘,一次算求和,主要注意输出格式吧
结果:一开始循环时,阶乘忘记循环开始重设temp的值等于1了,最后改过来,AC。
附代码:
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
double cale(int n);
int main(){
int n;
double result[10];
memset(result,0,10);
for(n=0;n<=9;n++)
result[n] = cale(n);
cout<<"n"<<" "<<"e"<<endl;
cout<<"- -----------"<<endl;
for(int i=0;i<10;i++){
if(i>=3){
cout<<i<<" "<<fixed<<setprecision(9)<<result[i]<<endl;
}
else{
cout<<i<<" "<<result[i]<<endl;
}
}
return 0;
}
double cale(int n){
double result=0;
double temp=1;
if(n==0)
result = 1;
else{
for(int i=0;i<=n;i++){
temp = 1;
for(int j=1;j<=i;j++){
temp *= j;
}
result += 1.0/temp;
}
}
return result;
}