美文网首页
2017实验10 程序结构与递归函数

2017实验10 程序结构与递归函数

作者: 林之禾 | 来源:发表于2017-12-19 23:47 被阅读0次
    6-1 使用递归函数计算1到n之和(10 分)
    int sum( int n ){
        if(n>0){
            return n+sum(n-1);
        }else{
            return 0;
        }   
    }
    //你也可以这样
    int sum( int n ){
        return n<=0?0:n+sum(n-1);
    }
    
    6-2 递归计算Ackermenn函数(15 分)
    int Ack( int m, int n ){
        if(m>0&&n>0){
            return Ack(m-1,Ack(m,n-1));
        }else if(m>0&&n==0){
            return Ack(m-1,1);
        }else if(m==0){
            return n+1;
        }
    }
    
    6-3 递归实现指数函数(15 分)
    double calc_pow( double x, int n ){
        if(n==1){
            return x; 
        }
        return x*calc_pow(x,n-1);
    }
    
    
    6-4 递归求Fabonacci数列(10 分)
    int f( int n ){
        if(n==1||n==2){
            return 1;
        }else if(n==0){
            return 0;
        }
        return f(n-2)+f(n-1);
    }
    
    6-5 递归实现顺序输出整数(15 分)
    void printdigits( int n ){
        if(n>10)
            printdigits(n/10);
        printf("%d\n",n%10);
    }
    
    6-6 判断满足条件的三位数(15 分)
    int isSquare(int n){  
        if(n == (int)sqrt(n)*(int)sqrt(n))  
            return 1;  
        else  
            return 0;  
    }  
      
    int search( int n ){  
        int i,j,k,tmp,cnt=0;  
        for(i=1;i<=9;i++){  
            for(j=0;j<=9;j++){  
                for(k=0;k<=9;k++){  
                    tmp = i*100+j*10+k;  
                    if(tmp>=101 && tmp<=n){  
                        if((i==j||i==k||j==k)&&isSquare(tmp)){  
                            cnt++;  
                        }  
                    }  
                    if(tmp>=n)  
                        return cnt;  
                }  
            }  
        }  
      
        return 0;  
    }
    
    6-7 递归求简单交错幂级数的部分和(15 分)
    double fn( double x, int n ) {
        int k;
        if(n%2==0){
            k=-1;
        }
        else {
            k=1;
        }
        if(n==0){
            return 0;
        }
    
        return k*pow(x, n)+fn(x, n-1);
    }
    
    6-8 十进制转换二进制(15 分)
    void dectobin( int n ){
         if(n>1){
            dectobin(n/2);
            printf("%d",n%2);
          }else{
            printf("%d",n);
          }
    }
    

    相关文章

      网友评论

          本文标题:2017实验10 程序结构与递归函数

          本文链接:https://www.haomeiwen.com/subject/yucwwxtx.html