我正在为家庭作业项目编写一个简单的十进制到二进制转换器,并遇到了一个问题。
该任务特别要求使用递归函数,我得到了数学,一切正确 - 它只是函数反向输出所有内容:
#include <iostream>
using namespace std;
void decToBinary(int, int);
int main() {
int asd = 0;
cout << "Enter a non-negative intger value: ";
cin >> asd;
cout << "Decimal " << asd << " = ";
decToBinary(asd, 0);
system("pause");
}
void decToBinary(int val, int remainder) {
if (val == 0) {
cout << remainder << " Binary" << endl;
} else {
cout << remainder;
decToBinary(val / 2, val % 2);
}
}
我真的很困惑为什么会这样。它似乎反过来输出所有内容,例如,而不是13是1101 - 它是01011.赋值要求将余数和值作为参数传递。
答案 0 :(得分:1)
你可以这样做:
void decToBinary(int val, int remainder)
{
remainder = val % 2;
val /= 2;
if (val || remainder)
{
decToBinary(val, val);
cout << remainder;
}
}
你必须单独处理0案件。