Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用递归查找数组中的最大整数_Java_Arrays_Recursion - Fatal编程技术网

Java 使用递归查找数组中的最大整数

Java 使用递归查找数组中的最大整数,java,arrays,recursion,Java,Arrays,Recursion,我甚至不知道从哪里开始做这个练习。我看了两个小时都不知道该怎么办。我被告知要编写一个方法,该方法采用整数数组和一系列高低索引 我得到的提示是,基本情况应该是low==high,返回的最大值应该是array[low]范围内的值。然后,如果在数组的范围内有多个元素,我们可以将其拆分,找到每个元素的最大值,然后找到最大值的最大值。然而,我不知道如何进行。我尝试使用这个方法,定义了两个新的数字,maxRangearray,low,low+high/2和maxRangearray,low+high/2,h

我甚至不知道从哪里开始做这个练习。我看了两个小时都不知道该怎么办。我被告知要编写一个方法,该方法采用整数数组和一系列高低索引


我得到的提示是,基本情况应该是low==high,返回的最大值应该是array[low]范围内的值。然后,如果在数组的范围内有多个元素,我们可以将其拆分,找到每个元素的最大值,然后找到最大值的最大值。然而,我不知道如何进行。我尝试使用这个方法,定义了两个新的数字,maxRangearray,low,low+high/2和maxRangearray,low+high/2,high,并尝试进行一种比较,但我不确定如何继续。你需要做的是将数组分成两半,直到只剩下一个元素。这是基本情况

在每个递归步骤中,在下半部分调用maxRange,在上半部分调用maxRange。这将返回这两个范围内的最大整数。如果我们知道下半部分的最大整数,上半部分的最大整数,那么两半部分的最大整数显然是两个中的较大者。有道理吗

另一种解释是:


在设计递归函数时,试着假装已经完成了,并且函数按预期工作。因此,当您仍在编写maxRange时,假设它已经完成了您想要的操作:给定一个数组,一个低整数是范围的开始,包含一个高整数是范围的结束,不包含一个高整数,它返回该范围内的最大整数。然后,我们只需编写函数maxRange,它将问题分成更小的部分进行递归,直到基本情况结束。当我们到达基本case low==high-1时,我们只返回array[low],因为只有一个元素。请记住,根据定义函数的方式(如果high是包含的),基本情况可以是low==high或low==high-1。在纸上试试看!请记住,整数算术只返回除法的整数部分:3/2是1

你在用什么语言?如果你使用c,你可以做

int[]arr={1,2,3,4};
int max=最大到达距离

首先用谷歌搜索你的问题标题。我做了,但我不明白答案,所以我来这里寻求帮助。我做到了!我以伪代码的形式编写了以下内容:基本情况:如果lowIndex=highIndex,则返回一个[lowIndex]。递归步骤:将数组分解为maxRangea、low、low+high/2;以及进入maxRangea,低+高/2+1,高;定义两个等于这两个变量的变量;比较这些值并返回最高值。。。。应该使用递归。