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