Recursion 使用递归查找数组中的最大值
这是我的测试阵列Recursion 使用递归查找数组中的最大值,recursion,int,max,Recursion,Int,Max,这是我的测试阵列 int [] A = {1,2,7,3,5,6}; 这就是方法 public static int largest(int [] A) { int temp = A[0]; return largestRec(A, 0, A.length - 1, temp); } // WRITE THIS METHOD that returns the largest of the elements in A // that are indexed from low to hi
int [] A = {1,2,7,3,5,6};
这就是方法
public static int largest(int [] A)
{
int temp = A[0];
return largestRec(A, 0, A.length - 1, temp);
}
// WRITE THIS METHOD that returns the largest of the elements in A
// that are indexed from low to high. RECURSIVELY!
private static int largestRec(int [] A, int low, int high, int temp)
{
if (low == high)
return A[low];
if (low <= A.length){
if (A[low] > temp){
temp = A[low];
}
largestRec(A, low+1, high, temp);
}
return temp
}
公共静态int最大值(int[]A)
{
int temp=A[0];
返回最大值(A,0,A.长度-1,温度);
}
//编写此方法,该方法返回数组中最大的元素
//索引从低到高。递归地!
专用静态最大整数(整数[]A、整数低、整数高、整数温度)
{
如果(低==高)
返回一个[低];
如果(低温){
温度=A[低];
}
最大温度(A,低+1,高,温度);
}
返回温度
}
为什么tem会重置并返回
A[0]
,即1
?问题在于,您没有对largestRec
递归调用的返回值进行任何操作。请记住,参数是按值传递的(即使在对同一函数的递归调用中也是如此),因此在函数内部更改参数不会影响外部
我认为您根本不应该将temp
作为参数传递
private static int largestRec(int [] A, int low, int high )
{
int temp;
if (low == high)
temp = A[low];
else
{
temp = largetstRec( A, low+1, high );
if (A[low] > temp){
temp = A[low];
}
}
return temp;
}
这使函数保持temp
本地(我认为这可能是您首先调用它的意思)。私有静态int-largestRec(int[]A,int-low,int-high){
var最大=A[低];
如果(低==高)
返回最大;//或[high],因为两者相同
对于(变量i=低;i<高;i++){
if(最大值
这需要是一个递归方法,因此不允许循环
private static int largestRec(int [] A, int low, int high){
var largest = A[low];
if(low == high)
return largest; // or A[high] because both are same
for(var i = low; i < high; i++){
if(largest < A[i])
largest = A[i];
}
return largest;
}