该提示要求我在下面使用公共静态并仅使用递归。这是我第一周使用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”不得不是假的,也不是真的。这绝不会发生。 –