我们必须找到数组的和,然后使用递归返回值是否为奇数(布尔值)
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;
}
答案 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);
}
}
但这仅在总和为奇数/偶数时才会给出