Java 使用递归查找整数数组列表中的最大值
我没有太多关于这个。。。我的任务是创建一个递归方法,该方法将输出整数数组列表中的最大值Java 使用递归查找整数数组列表中的最大值,java,recursion,arraylist,Java,Recursion,Arraylist,我没有太多关于这个。。。我的任务是创建一个递归方法,该方法将输出整数数组列表中的最大值 publicstaticintmaxvalue(arraylista) { 如果(a.isEmpty())抛出新的NoSuchElementException(“无法计算空列表的最大值”); 如果(a.size()==1){返回a.get(0);} 否则{ //不确定在这里为递归添加什么 } } 一种方法是比较前两个值,删除最小的一个值(如果相等,则删除其中一个值),并设置列表大小为1的基本大小写,如下所示:
publicstaticintmaxvalue(arraylista)
{
如果(a.isEmpty())抛出新的NoSuchElementException(“无法计算空列表的最大值”);
如果(a.size()==1){返回a.get(0);}
否则{
//不确定在这里为递归添加什么
}
}
一种方法是比较前两个值,删除最小的一个值(如果相等,则删除其中一个值),并设置列表大小为1的基本大小写,如下所示:
public static int maxValue(ArrayList<Integer> a)
{
if (a.isEmpty()) return -1;
if (a.size() == 1) return a.get(0);
if (a.get(0) <= a.get(1))
{
a.remove(0);
} else
{
a.remove(1);
}
return maxValue(a);
}
publicstaticintmaxvalue(arraylista)
{
如果(a.isEmpty())返回-1;
如果(a.size()==1)返回a.get(0);
如果(a.get(0)尝试以下方法:
import java.util.List;
import static java.util.Math.*;
import java.util.NoSuchElementException;
import static java.util.Objects.*;
public static int maxValue( List<Integer> list )
{
if( isNull( list ) ) throw new IllegalArgumentException( "list is null." );
if( list.isEmpty() ) throw new NoSuchElementException( "Can't compute max of empty list." );
var size = list.size();
var head = list.get( 0 );
var retValue = size == 1 ? head : max( head, maxValue( list.sublist( 1, size ) );
return retValue;
}
import java.util.List;
导入静态java.util.Math.*;
导入java.util.NoSuchElementException;
导入静态java.util.Objects.*;
公共静态int maxValue(列表)
{
if(isNull(list))抛出新的IllegalArgumentException(“list为null”);
if(list.isEmpty())抛出新的NoSuchElementException(“无法计算空列表的最大值”);
var size=list.size();
var head=list.get(0);
var retValue=size==1?head:max(head,maxValue(list.sublist(1,size));
返回值;
}
List.subList()
不返回(子)列表的副本,而是返回基础列表上的新视图。如果要求允许,可以添加第二个参数n,并传递ArrayList的大小
...
System.out.println(maxValue(arrlst, arrlst.size()));
...
public static int maxValue(ArrayList<Integer> a, int n) {
if (n == 1)
return a.get(0);
return Math.max(a.get(n - 1), maxValue(a, n - 1));
}
。。。
System.out.println(maxValue(arrlst,arrlst.size());
...
公共静态int maxValue(ArrayList a,int n){
如果(n==1)
返回a.get(0);
返回Math.max(a.get(n-1),maxValue(a,n-1));
}
解决方案很糟糕,因为它会破坏输入。至少,它应该使用输入的一个副本,尽管这会使其速度变慢且内存不足。是的,我想提一提,但根据OP编写的内容(起始代码),这正是作业需要的