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条)

报告相同问题?

悬赏问题

  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错