第十题:
迭代:
double H(int n,double x)
{
if(n==1) return 1;
double h1=1, h2=2*x;
for(int i=3;i<=n;i++){
double temp=2*x*h2-2*(i-1)*h1;
h1=h2;
h2=temp;
}
return h2;
}
递归
double Hermit(int n,double x)
{
switch(n)
{
case 1:
return 1;
case 2:
return 2*x;
default:
return 2*x*Hermit(n-1,x)-2*(n-1)*Hermit(n-2,x);
}
}
说明:以上两个版本都不检查n<=0的情况。
第十一题:
int Ack(int m,int n){
if(m==0)
return n+1;
else if (n==0)
return Ack(m-1,1);
else
return Ack(m-1,Ack(m,n-1));
}
说明:本函数没有检查m和n小于零的情况,因为根据题意所给的条件,m,n均大于零。也就是说,调用本函数的程序应该负责该部分的检查。
迭代:
double H(int n,double x)
{
if(n==1) return 1;
double h1=1, h2=2*x;
for(int i=3;i<=n;i++){
double temp=2*x*h2-2*(i-1)*h1;
h1=h2;
h2=temp;
}
return h2;
}
递归
double Hermit(int n,double x)
{
switch(n)
{
case 1:
return 1;
case 2:
return 2*x;
default:
return 2*x*Hermit(n-1,x)-2*(n-1)*Hermit(n-2,x);
}
}
说明:以上两个版本都不检查n<=0的情况。
第十一题:
int Ack(int m,int n){
if(m==0)
return n+1;
else if (n==0)
return Ack(m-1,1);
else
return Ack(m-1,Ack(m,n-1));
}
说明:本函数没有检查m和n小于零的情况,因为根据题意所给的条件,m,n均大于零。也就是说,调用本函数的程序应该负责该部分的检查。