Java递归和的奇数

时间:2018-10-17 01:28:04

标签: java recursion

我们必须找到数组的和,然后使用递归返回值是否为奇数(布尔值)

A = {87, 31, 15, 25, 10, 15, 21, 75)
methodname(A, pos) //position is 0 at the begining

到目前为止,我已经做到了这一点,但由于我无法在同一行中求和并返回布尔值,因此距离我很远

if (pos == array.length-1) {
    return A[pos] % 2 != 0
} else {
    if (pos < A.length - 1)
        return A[pos] + methodname(A, pos + 1) % 2 == 1;
}

2 个答案:

答案 0 :(得分:2)

public static void main(String[] args) {
    System.out.println(isSumOdd(new int[]{3, 3, 4}, 0));
}

private static boolean isSumOdd(int[] arr, int pos) {
    return pos == arr.length - 1
            ? arr[pos] % 2 != 0
            : isSumOdd(arr, pos + 1) ^ arr[pos] % 2 != 0; //Sum of 2 numbers can be odd iff exactly one of them is odd.
}

答案 1 :(得分:0)

您可以尝试使用以下方法(语法可能是错误的,请将以下内容视为伪代码):

  // gives whether the sum from i to end 
  // is even or odd 
  Boolean sumIsEven(int[] arr, int i ){

      //base case
      if(arr.length-1==i){
           return arr[i]%2 ==0;
      }

      if(arr[i]%2 == 0){
           return sumIsEven(arr, i +1);
      }else{
           // arr[i] is odd
           return !sumIsEven(arr, i +1);
      }
}

但这仅在总和为奇数/偶数时才会给出