在java中使用递归查找数组中的最高奇数 public static int highestOdd(int[]arr,int index) { if(arr.length-1==index)返回arr[index]; int high=highestOdd(arr,索引+1); 高=高>arr[指数]?高:arr[指数]; 高回报; }
索引总是传递为0,因此此代码将检查所有数字,包括偶数,但我只想输出最高的奇数。 我希望有人能帮助我在java中使用递归查找数组中的最高奇数 public static int highestOdd(int[]arr,int index) { if(arr.length-1==index)返回arr[index]; int high=highestOdd(arr,索引+1); 高=高>arr[指数]?高:arr[指数]; 高回报; },java,arrays,recursion,Java,Arrays,Recursion,索引总是传递为0,因此此代码将检查所有数字,包括偶数,但我只想输出最高的奇数。 我希望有人能帮助我 感谢您的光临。如果arr[index]值更高,用arr[index]替换high值时,只需检查该值是否为奇数即可。否则保持高值不变。请尝试以下代码。如果数组中没有奇数值,它将返回-1(假设数组的所有值都是正值,如果有可能是负值,则可以用整数min替换-1)。如果你不懂任何部分,请告诉我 public static int highestOdd(int [] arr, int index) {
感谢您的光临。如果arr[index]值更高,用arr[index]替换high值时,只需检查该值是否为奇数即可。否则保持高值不变。请尝试以下代码。如果数组中没有奇数值,它将返回-1(假设数组的所有值都是正值,如果有可能是负值,则可以用整数min替换-1)。如果你不懂任何部分,请告诉我
public static int highestOdd(int [] arr, int index) {
if(arr.length - 1 == index) return arr[index] % 2 > 0 ? arr[index] : -1;
int high = highestOdd(arr,index+1);
if(arr[index] % 2 > 0) high = high > arr[index] ? high : arr[index];
return high;
}
仅当遇到奇数整数时更新“高”
public static int highestOdd(int[] arr, int index) {
// When last Integer is odd.
if (index == arr.length - 1 && arr[index] % 2 != 0) {
return arr[index];
}
// When last Integer is even.
else if(index == arr.length - 1)
return Integer.MIN_VALUE;
int high = highestOdd(arr, index+1);
//Update high only when current index has odd.
if(arr[index]%2 != 0){
high = high > arr[index] ? high : arr[index];
}
return high;
}
“奇数”指的是奇数索引数或奇数?这是一个很好的问题,可以确保您不会学到任何东西。请注意此
arr[index]%2==1
。最好这样表达arr[index]%2!=0
包含负数。但不应a%n
始终返回范围0到n-1的正整数。从数学上讲,实际上,你可以把每个余数都表示为负数。围绕这一点有很多讨论。实际上,根据编程语言的不同,您将得到一个负数或正数,因此,为了确保无论其符号是什么,最好将其表示为!=0
。谢谢,我不知道。通常认为%
运算符类似于数学模块化
函数,它总是返回一个正整数。将在答案中进行更改。