該提示要求我在下面使用公共靜態並僅使用遞歸。這是我第一週使用Java,所以我的知識基礎很低。我看到一些Luhn算法的在線代碼,但似乎沒有一個使用布爾作爲第二個參數。Java新手,無法制作Luhn算法
基本上我需要創建一個Luhn算法,它從每個值(從右到左),將第二個值加倍(布爾值用於確定數字是否加倍),然後將所有值一起。例如, )。 System.out.println(sumLuhnDigits(7992739871005L,false));
會返回72
我遇到的問題是'長'型。
Java告訴我,我需要在設置它等於(數字%10)之前啓動count變量。等等。我假設這是因爲我已將它設置爲+ =並且它需要具有值才能執行所以。然而,在頂部設置它等於0,與我試圖製作的計數器混淆。
語法也不喜歡當我嘗試返回計數,說它不是'長'型。 看來我目前還陷入了一個stackoverflow錯誤。所以我需要擺脫遞歸。
public static long sumLuhnDigits(long number, boolean odd) {
/// Java IDE said I needed to initiate the variable count but now it won't accumulate properly being set = 0
long count = 0;
if (odd == false) {
count += number % 10;
number = number/10;
odd = true;
return sumLuhnDigits(number, odd);
} if (odd == true) {
count += (number % 10) * 2;
number = number/10;
odd = false;
return sumLuhnDigits(number, odd);
/// Here I ran into the problem that count is not the type long, this is also as far as I have gotten
} if (number == 0) {
return count;
}
}
歡迎堆棧溢出!看起來你可能是一個尋求作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 (即使這不是作業,請考慮建議。) –
你忘了問一個問題。究竟發生了什麼問題? –
最後一個'else if'塊怎麼能評估?布爾「odd」不得不是假的,也不是真的。這絕不會發生。 –