此代码将十进制整数转换为二进制。这很完美。我知道这已经使用递归方法完成了......但我不明白参数是如何在这个函数的第8行上工作的。在此先感谢:)。
void binary(int number) {
int remainder;
if(number <= 1) {
cout << number;
return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;
}
答案 0 :(得分:1)
在大多数"C inspired languages*"中,运算符>>
表示右(按位)移位运算符。所以代码
binary(number >> 1);
将值传递给binary()
的递归调用,该调用向右移一位(即整数除以2)。
当数字为<= 1
时递归停止,即不再有2的幂来将剩余数字除以。
在此期间,调用的模2 (% 2)
余数保持在内部递归调用之后,以便它将保持2的幂的正确位置
e.g。
12 Decimal
/ 2 = 6 remainder 0 // printed fourth
/ 2 = 3 remainder 0 // printed third
/ 2 = 1 remainder 1 // printed second
> <= 1 so Print 1 // printed first
因此将打印1100
。
* Wikipedias术语