我有這個練習,要求我創建一個程序來計算一個數字的奇數,所以如果數字是12345,它會計爲3,因爲1,3和5.我開始創建一個遞歸方法,我的非常第一個,與分歧的if-else。使用它的要點是看if (inputNumber % 2 == '0')
。如果是,則該數字的最後一位數字應該是0,2,4,6或8,因爲只有這些數字如果用2進行模數化,則這些數字纔會爲0,所以oddDigitsCounter不會增長。否則,if (inputNumber % 2 == '1')
,該號碼的最後一位將是1,3,5,7或9. oddDigitCounter++;
,如此。要按位數檢查數字,我試圖將數字除以十,因爲它是一個int
變量,所以它不會在浮點數後保存任何數字。 這是因爲現在的方法:爲什麼這種計數一個數字的所有奇數的遞歸方法使得無限遞歸?
public static int oddDigitCounter (int number) {
int oddCount, moduledNumber, dividedNumber, absoluteInput;
oddCount = 0;
absoluteInput = Math.abs(number);
moduledNumber = absoluteInput % 2;
dividedNumber = absoluteInput/10;
if (absoluteInput == '0') {
oddCount = oddCount; }
else if (moduledNumber == '0') {
oddCount = oddCount;
oddDigitCounter(dividedNumber); }
else // (number % 2 != 0)
oddCount++;
oddDigitCounter(dividedNumber); }
return oddCount;
爲什麼它給了我無窮遞歸?怎麼了?爲什麼?任何其他方式來解決這個問題?任何改進我的計劃的想法?
令人驚訝的是@JunedAhsan註釋upvoted兩次... –