我是C的新手 . 我正在尝试编写递归二进制函数 . 二进制输出需要是4位,因此逻辑大约为15,二进制字符串长度 . 它正确地转换为二进制,我遇到的问题是结束递归调用并将二进制字符串返回到main函数 . 它似乎只是向后通过调用堆栈?有人可以帮我理解发生了什么吗?
假设使用命名空间std . 我知道这不是一个好习惯,但是我的课程是必需的 .
string binary(int number, string b){
if (number > 0 && number < 15){
int temp;
temp = number % 2;
b = to_string(temp) + b;
number = number / 2;
binary(number, b);
}
else if (number > 15){
b = "1111";
number = number - 15;
binary(number, b);
}
else if (number == 15){
b = "11110000";
return b;
}
//should be if number < 1
else{
int s = b.size();
//check to make sure the binary string is 4 bits or more
if (s >= 4){
return b;
}
else{
for (int i = s; i < 4; i++){
b = '0' + b;
}
return b;
}
}
}