递归函数是否反向打印?

时间:2018-04-29 05:39:05

标签: c++ recursion

#include <iostream>

using namespace std;
void convertToBinary(unsigned int n)
{
    if (n>0)
    {
        convertToBinary(n / 2);
        cout << n % 2;
    }
}
int main(){
    unsigned int n;
    cin >> n;
    convertToBinary(n);

}

这是一个从十进制转换为二进制的函数递归,例如,如果我给这个函数n等于10,则输出为1010,为什么1位于最右边的数字?这将是0,因为10%2 = 0,然后打印0,因此预期输出为101,因为它导致0

1 个答案:

答案 0 :(得分:1)

递归调用使用的数据结构称为stack。其工作原理是后进先出。因此,在您的基本条件(即(n > 0))满足之前,convertToBinary会在打印n%2之前重新调用convertToBinary。当基本条件未满足时,由于堆栈结构,unsupported operand type(s) for *: 'DeferredAttribute' and 'DeferredAttribute' 开始反向打印二进制值。