我创建了一个简单的十进制到二进制程序。 让我们说我输入数字8。 它回写0001 我希望它是1000
我该怎么做?
代码在这里:
using namespace std;
int translating(int x);
int main()
{
int x;
int translate;
cout << "Write a number: ";
cin >> x;
cout << endl;
translate = translating(x);
cout << endl;
cout << endl;
return 0;
}
int translating(int x)
{
if (x == 1)
{
cout << "1";
return 0;
}
if ((x % 2)==1)
{
cout << "1";
return (translating((x-1)/2));
}
else
{
cout << "0";
return (translating(x/2));
}
}
答案 0 :(得分:5)
不是直接写输出,而是首先将其写入临时字符串,然后将该字符串从最后一个字符遍历到第一个字符。
答案 1 :(得分:3)
非常简单,这么简单,你会踢自己。只需颠倒输出语句和递归函数调用的顺序。还修正了一个错误。
void translating(int x)
{
if (x < 2)
{
cout << x;
return;
}
if ((x % 2)==1)
{
translating((x-1)/2);
cout << "1";
}
else
{
translating(x/2);
cout << "0";
}
}