我正在编写递归方法来计算数组中所有奇数的总和。但是,我的程序正在将负数添加为正数。
if(nums[start] % 2 == 1) {
sum+=nums[start];
return computeSumOfOdd(nums, start + 1, sum);
所以我改变了我的代码:
if(nums[start] % 2 == 1) {
if(nums[start] < 0)
sum-=nums[start];
else
sum+=nums[start];
return computeSumOfOdd(nums, start + 1, sum);
它仍然给我相同的反应,我无法弄清楚我做错了什么。
答案 0 :(得分:1)
在Java中,x % 2
永远不能等于1
为负x
(x % 2
的唯一可能值为-1
和0
)
因此,您的两个代码段是等效的:if
时永远不会输入外部nums[start] < 0
语句。
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3