递归的问题(倒序输出)

问题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<p;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);

}

结果:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容