题目地址: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;
}
本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2007/12/25/1013925.html,如需转载请自行联系原作者
微信关注我们
原文链接:https://yq.aliyun.com/articles/340185
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
相关文章
发表评论
资源下载
更多资源Mario
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
Apache Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
JDK
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。