Just_浮光 2020-03-23 14:44 采纳率: 100%
浏览 179
已采纳

初学者的提问_这个递归函数(十进制转化为二进制)运行的结果为什么会在预期的结果前加0,恳请各位大佬解惑。

#include<iostream>
using namespace std;
void f(int i)
{
     if(i>0){
          if(i>0) f(i/2);
          cout<<i%2;
     }
     else if(i<0){
          if(-i>0) f(i/2);
          cout<<(-i)%2;
     }
     else cout<<i;
}

int main( )
{      
     f(5);     cout<<'\n';
     f(-23);   cout<<'\n';
     f(0);     cout<<'\n';

     return 0;
}

我预期的结果101;10111;0
运行的结果0101;010111;0

  • 写回答

2条回答 默认 最新

  • 胖狗子修行之路 2020-03-23 16:09
    关注

    递归结束的条件是i = 0, 也就是你最后的一个else条件

    #include<iostream>
    using namespace std;
    
    void f1(int i) {
        if(i == 0) return;
        if(i>0) f1(i/2);
        cout<<i%2;
    }
    
    void f(int i) {
        if(i > 0) {
            f1(i);
        }else if(i < 0){
            cout << "-";
            f1(-i);
        }else {
            cout << i;
        }
    }
    
    int main( )
    {      
         f(5);     cout<<'\n';
         f(-23);   cout<<'\n';
         f(0);     cout<<'\n';
    
         return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求