递归函数以反向

时间:2018-03-28 21:38:20

标签: c++

我正在为家庭作业项目编写一个简单的十进制到二进制转换器,并遇到了一个问题。

该任务特别要求使用递归函数,我得到了数学,一切正确 - 它只是函数反向输出所有内容:

#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.赋值要求将余数和值作为参数传递。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

void decToBinary(int val, int remainder)
{
    remainder = val % 2;
    val /= 2;
    if (val || remainder)
    {
        decToBinary(val, val);
        cout << remainder;
    }
}

你必须单独处理0案件。