我需要對下面的一段代碼一些解釋:回報的說明模
它用於將十進制數二進制數字代碼: 距離的教程,但我感到困惑。
void binary(int);
void main(void) {
int number;
cout << "Please enter a positive integer: ";
cin >> number;
if (number < 0)
cout << "That is not a positive integer.\n";
else {
cout << number << " converted to binary is: ";
binary(number);
cout << endl;
//cin.get();
}
}
void binary(int number) {
int remainder;
if(number <= 1) {
cout << number;
return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;
//cin.get();
}
我用斷點來觀察數據通過程序,但最後我不能跟着它。
什麼我看到:
它需要一個數,並且如果所述數目< = 1它打印該數字(0或1)。
但在它之前,它首先計算該數字的模數,並將其餘數。 然後它移動到數字的右邊或者相同,直到數字小於或等於1.
但是然後它將「cout餘數」保持多次(取決於計算的多少0/1) 但這怎麼可能? 餘數是一個緩衝區嗎? (我認爲它保持覆蓋(因爲它是int),但它看起來像不斷增加位,然後打印幾次)?
有人可以解釋這對我來說慢?
這個問題實際上是關於遞歸。一旦你理解了遞歸的概念,代碼就會有意義。 – masaers 2012-03-17 09:25:38