xSapientia 2021-09-11 20:13 采纳率: 100%
浏览 33
已结题

为什么c语言的两个题目,相同结构代码下,递归和循环的打印顺序一个相同,一个相反。

最近在自学c,环境是vs2019,联系的时候发现了一个问题
两个题目,相同结构代码下,递归和循环的打印顺序一个相同,一个相反。
帮忙解惑一下,感谢~

十进制转二进制代码

#include<stdio.h>
//-------------------------二进制的转换-------------------------
//                      >>>递归转二进制<<<
int bit2(unsigned int num)
{
    if (!num) 
    { 
        return num;
    }
    bit2(num / 2);
    printf("%d", num % 2); 
}

//                      >>>循环转二进制<<<
int rbit2(unsigned int num)
{
    int i_count = 0;
    char c_output01[10] = { 0 };

    for (; i_count < 10 && num != 0; i_count++)
    {
        c_output01[i_count] = num % 2; 
        num /= 2;                                    
    }

    i_count--;                                                 

    for (; i_count >= 0; i_count--)                           
    {
        printf("%d", c_output01[i_count]);
    }

    return num;
}

int main()
{
    unsigned int i_num1 = 0;
    printf("-------------------------二进制的转化-------------------------\n");
    printf("请输入一个小于1024的数字:\n");
    scanf_s("%d",&i_num1);

    printf("\n嵌套转二进制:\t");
    bit2(i_num1);

    printf("\n递归转二进制:\t");
    rbit2(i_num1);

    return 0;
}

img

十进制获取数位上数值的代码

#include<stdio.h>
//-------------------------获取数位数字-------------------------
//                      >>>递归获取数位<<<
int getDigit(int num)
{
    if (!num)
    {
        return num;
    }
    printf("%d\t", num % 10);
    getDigit(num / 10);
}

//                      >>>循环获取数位<<<
int rgetDigit(int num)
{
    int i_count = 0;
    char c_output[10] = { 0 };

    for (; i_count < 10 && num != 0; i_count++)
    {
        c_output[i_count] = num % 10;
        num /= 10;
    }

    i_count--;


    for (; i_count >= 0; i_count--)
    {
        printf("%d\t", c_output[i_count]);
    }

    return num;
}

int main()
{
    int i_num = 0;
    printf("-------------------------获取数位数字-------------------------\n");
    printf("请输入一个数字:\t\n");
    scanf_s("%d", &i_num);

    printf("\n递归获取数位\t");
    getDigit(i_num);
    printf("\n循环获取数位\t");
    rgetDigit(i_num);

    return 0;
}

img

辛苦了!

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-09-11 20:33
    关注

    img


    把这两句互换下位置即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月15日
  • 已采纳回答 9月11日
  • 创建了问题 9月11日

悬赏问题

  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏