//----------------------------------- //EX0501_1.cpp //勒让德多项式 递归版 //----------------------------------- #include<iostream> using namespace std; //----------------------------------- double poly(int n, double x){ if(n==0) return 1; if(n==1) return x; return ((2*n-1)*x*poly(n-1,x)-(n-1)*poly(n-2,x))/n; }//---------------------------------- int main(){ cout<<poly(8, 1.2)<<"\n|; }//----------------------------------
//----------------------------------- //EX0501_2.cpp //勒让德多项式 非递归版 //----------------------------------- #include<iostream> using namespace std; //----------------------------------- double poly(int n, double x){ if(n==0) return 1.0; if(n==1) return x; double au; double as =1.0; double at =x; for(int n=2; n<=8; ++n, as =at, at=au) au = ((z*n-1)*x*at-(n-1)*as)/n; return au; }//---------------------------------- int main(){ cout<<poly(8, 1.2)<<"\n"; }//----------------------------------
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
//----------------------------------- //EX0501_1.cpp //勒让德多项式 递归版 //----------------------------------- #include<iostream> using namespace std; //----------------------------------- double poly(int n, double x){ if(n==0) return 1; if(n==1) return x; return ((2*n-1)*x*poly(n-1,x)-(n-1)*poly(n-2,x))/n; }//---------------------------------- int main(){ cout<<poly(8, 1.2)<<"\n|; }//----------------------------------//----------------------------------- //EX0501_2.cpp //勒让德多项式 非递归版 //----------------------------------- #include<iostream> using namespace std; //----------------------------------- double poly(int n, double x){ if(n==0) return 1.0; if(n==1) return x; double au; double as =1.0; double at =x; for(int n=2; n<=8; ++n, as =at, at=au) au = ((z*n-1)*x*at-(n-1)*as)/n; return au; }//---------------------------------- int main(){ cout<<poly(8, 1.2)<<"\n"; }//----------------------------------运行结果为34.3151