题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1012

解法一:最直观的方法,就是递归计算来求各项之和

HDU1012 Calculate e#include <iostream>
HDU1012 Calculate e#include 
<iomanip>
HDU1012 Calculate e
using namespace std;
HDU1012 Calculate e
HDU1012 Calculate e
double curItem(int n)

解法二:

题中给出的计算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项节省一些,

HDU1012 Calculate e#include <iostream>
HDU1012 Calculate e#include 
<iomanip>
HDU1012 Calculate e
using namespace std;
HDU1012 Calculate e
HDU1012 Calculate e
double doCaculate(int n)


相关文章: