时间复杂度从O(n2)到O(n)变化的小技巧(计算e的值)
有时候呢,我真的很为泰勒感到委屈呢,伟大的泰勒展开式,令X0=0时,变成了麦克劳林展开式,即简便,又实用。(不知为啥,我想到了一个超级企业。模仿也可到无可挑剔的高度)
求自然对数e
通常我们会使用两次循环,
#include <iostream>
using namespace std;
void ee(int n){
double s=1.0;
int i,j;
for(i=1;i<=n;i++){
int s1=1;
for(j=1;j<=i;j++){
s1=s1*j;
}
s+=1.0/s1;
}
cout<<s<<endl;
}
int main()
{
ee(10);
}
频度为 n*n/2 + n/2
时间复杂度为 O(n2)
——————————————————华丽分割线
#include <iostream>
using namespace std;
void ee(int n){
double s=1;
double s1=s;
int i;
for(i=1;i<=n;i++){
s1=s1/i;
s+=s1;
}
cout<<s<<endl;
}
int main()
{
ee(100);
}
频度为n
时间复杂度为O(n)
感觉数学学好了,写出来的程序就是不一样哈。