第四章 过程抽象——函数(三)

来源:互联网 发布:查看windows重启日志 编辑:程序博客网 时间:2024/06/05 17:07
第十题:
迭代:
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均大于零。也就是说,调用本函数的程序应该负责该部分的检查。
原创粉丝点击