递归的问题(倒序输出)

问题1:设计一个函数,例如将1234倒序输出 4321

分析:

1,首先确定n的位数p,结束条件是p==1,的时候结束

2,循环是每次确定最高位的数,从而n-最高位的数,进行递归,每次递归的数都是去掉最高位的数,然后输出最高位的数

具体代码:

int f(int n){ //获得位数

    int count=0;

    while(1){

        if(n==0){

            break;

        }

        n=n/10;

        count++;

    }

    return count;

}

int f1(int p){

    //获的10的p次方,并返回

    int i,sum=1;

    for(i=0;i

        sum*=10;

    }

    return sum;

}

void f_print(int n){

    //确定n的位数

    int m;//存储最高位

    int p=f(n); //存储位数

    if(p==1){

        printf("%d",n);

        return;

    }else{

        //获得最高位

        m=n/f1(--p);

        n=n-m*f1(p);

        f_print(n);

        printf("%d",m);

    }

}

main(){

    f_print(1234);

}

结果截图:


问题1

问题2:编写一个程序,采用递归的方式,倒序输出一个以.结尾的字符串

分析:

1,结束条件,ch==‘.’

2,循环条件,每次指针加1

代码:

void f(char *str ,int n){

    char ch=*(str+n);

    if(ch=='.'){

        return;

    }else{

        f(str,n+1);

        printf("%c",ch);

    }

}

main(){

    char ch[80]="djfkdafj 23j34ijkjfaioejkk 45jk.djklfajadkf ";

    f(ch,0);

}

结果:


你可能感兴趣的:(递归的问题(倒序输出))