题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1012
解法一:最直观的方法,就是递归计算来求各项之和
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
#include
<
iostream
>
#include
<
iomanip
>
using
namespace
std;

double
curItem(
int
n)

{//当前子项
if(n==0)


{
return1;
}
else
returncurItem(n-1)/n;

}
double
sum(
int
n)

{
if(n==0)
return1;
else
returnsum(n-1)+curItem(n);

}
void
caculateE(
int
n)

{//输出指定n下e的值
doubletmp1,tmp2=1.0f,result=0.0f;
inti;
result=sum(n);
if(n==0||n==1)


{
cout<<n<<""<<static_cast<int>(result)<<endl;
}
elseif(n==2)


{
cout<<setiosflags(ios::fixed)<<setprecision(1);
cout<<n<<""<<result<<endl;
}
else


{
cout<<setiosflags(ios::fixed)<<setprecision(9);
cout<<n<<""<<result<<endl;
}
}
int
main(
int
argc,
char
*
argv[])

{
intn,i;
cout<<"ne"<<endl;
cout<<"------------"<<endl;
for(i=0;i<=9;++i)


{
caculateE(i);
}
cin>>i;
return0;
}









































































解法二:
题中给出的计算 e 的式子是由 e^x 的泰勒级数展开而得,在计算之前可以使用个技巧,就是把它们叠乘起来 改写成:e=(1 +( 1+1/2(1+1/3(1+1/4(1+…1/(n-1)(1+1/n)))) ) ,从最里面的括号往外算,共做 n 次除法和加法得一段结果,运算效率也是 O(N*M) ,但是由于收敛速度快些,所以 N 项节省一些,
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
#include
<
iostream
>
#include
<
iomanip
>
using
namespace
std;

double
doCaculate(
int
n)

{//实际的计算
doubletmp1,tmp2=1.0f,result=0.0f;
inti;

for(i=n;i>=1;--i)


{
tmp1=static_cast<double>(1)/static_cast<double>(i);
tmp2=1.0f+tmp1*tmp2;
}
returntmp2;
}
void
caculateE(
int
n)

{//输出指定n下e的值,主要是输出格式的处理
doubleresult=0.0f;
result=doCaculate(n);
if(n==0||n==1)


{
cout<<n<<""<<static_cast<int>(result)<<endl;
}
elseif(n==2)


{
cout<<setiosflags(ios::fixed)<<setprecision(1);
cout<<n<<""<<result<<endl;
}
else


{
cout<<setiosflags(ios::fixed)<<setprecision(9);
cout<<n<<""<<result<<endl;
}
}
int
main(
int
argc,
char
*
argv[])

{
intn,i;
cout<<"ne"<<endl;
cout<<"------------"<<endl;
for(i=0;i<=9;++i)


{
caculateE(i);
}
return0;
}
































































