?Hermite的定义为:
? ? ? ? ? ? ? ? ? ? ? ?
第一串代码是利用了递归的方法:
#include<iostream>
using namespace std;
double Hermite(int n,double x)
{
float k;
if(n>1)k=2*x*Hermite(n-1,x)-2*(n-1)*Hermite(n-2,x);
if(n==0)k=1;
if(n==1)k=2*x;
return k;
}
int main()
{
float x;int n;
cout<<"请输入实数x和整数n,求Hermite多项式前n项的值\n";
cin>>x>>n;
cout<<Hermite(n,x)<<endl;
return 0;
}
下面的是非递归法,即迭代法:
#include<iostream>
using namespace std;
double Hermite(int n,double x)
{
int h1,h2,h3;
h1=1,h2=2*x; //n=0时h1,n=1时h2
for(int i=2;i<=n;i++){ //迭代法,从n=2时开始,直至第n项
h3=2*x*h2-2*(n-1)*h1;
h1=h2; //将h2替换h1,h3代替h2进入新一轮的循环
h2=h3;}
return h3;
}
int main()
{
float x;int n;
cout<<"请输入实数x和整数n,求Hermite多项式前n项的值\n";
cin>>x>>n;
cout<<Hermite(n,x)<<endl;
return 0;
}
|