Java 递归返回列表t中的最小元素
我做了以下事情,但它返回错误,似乎无法找出原因,请你们帮助我的错误在哪里或东西丢失我感到困惑Java 递归返回列表t中的最小元素,java,list,recursion,Java,List,Recursion,我做了以下事情,但它返回错误,似乎无法找出原因,请你们帮助我的错误在哪里或东西丢失我感到困惑 public static int min(List<Integer> t) { int minimum; if (t.size() == 1) { return t.get(0); } else { // index -- first index
public static int min(List<Integer> t) {
int minimum;
if (t.size() == 1) {
return t.get(0);
} else {
// index -- first index
int index = t.get(0);
List<Integer> u = t.subList(1, t.size());
minimum = Math.min(index, u.get(0));// index- the first index
}
return minimum;
}
公共静态整数最小值(列表t){
最小整数;
如果(t.size()==1){
返回t.get(0);
}否则{
//索引——第一个索引
int index=t.get(0);
列表u=t.子列表(1,t.size());
最小值=Math.min(索引,u.get(0));//索引-第一个索引
}
返回最小值;
}
不需要创建临时变量。相反,您应该返回(如果少于两个元素)第一个元素。否则,返回第一个元素的最小值以及使用子列表递归调用的结果。像
public static int min(List<Integer> t) {
if (t.size() < 2) {
return t.get(0);
}
return Math.min(t.get(0), min(t.subList(1, t.size())));
}
不需要创建临时变量。相反,您应该返回(如果少于两个元素)第一个元素。否则,返回第一个元素的最小值以及使用子列表递归调用的结果。像
public static int min(List<Integer> t) {
if (t.size() < 2) {
return t.get(0);
}
return Math.min(t.get(0), min(t.subList(1, t.size())));
}
您没有递归调用它,请更改为:
minimum = Math.min(index, min(u));
这是一个定义的实现,如minimumElementOf(t)=minimumOf(head(t),minimumElementOf(tail(t))如果不是递归调用,请更改为:
minimum = Math.min(index, min(u));
这是一个定义的实现,比如minimumElementOf(t)=minimumOf(head(t),minimumElementOf(tail(t))您没有从方法中调用任何递归调用。您没有从方法中调用任何递归调用。