问题减去Java中的负数

时间:2016-11-04 21:43:30

标签: java recursion

我正在编写递归方法来计算数组中所有奇数的总和。但是,我的程序正在将负数添加为正数。

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);

它仍然给我相同的反应,我无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:1)

在Java中,x % 2永远不能等于1为负xx % 2的唯一可能值为-10

因此,您的两个代码段是等效的:if时永远不会输入外部nums[start] < 0语句。

https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3