题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1012
解法一:最直观的方法,就是递归计算来求各项之和
#include <iostream>
#include <iomanip>
using namespace std;

double curItem(int n)


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

{
return 1;
}
else
return curItem(n-1)/n;

}
double sum(int n)


{
if(n==0)
return 1;
else
return sum(n-1)+curItem(n);

}
void caculateE(int n)


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

{
cout<<n<<" "<<static_cast<int>(result)<<endl;
}
else if(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[])


{
int n,i;
cout<<"n e"<<endl;
cout<<"- -----------"<<endl;
for(i=0;i<=9;++i)

{
caculateE(i);
}
cin>>i;
return 0;
}

解法二:题中给出的计算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项节省一些,
#include <iostream>
#include <iomanip>
using namespace std;

double doCaculate(int n)


{//实际的计算
double tmp1,tmp2=1.0f,result=0.0f;
int i;

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

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


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

{
cout<<n<<" "<<static_cast<int>(result)<<endl;
}
else if(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[])


{
int n,i;
cout<<"n e"<<endl;
cout<<"- -----------"<<endl;
for(i=0;i<=9;++i)

{
caculateE(i);
}
return 0;
}


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述