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

初学者的提问_这个递归函数(十进制转化为二进制)运行的结果为什么会在预期的结果前加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

递归结束的条件是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;
}

代码都贴不全吗,再编辑一下吧