Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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 递归返回列表t中的最小元素_Java_List_Recursion - Fatal编程技术网

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))

您没有从方法中调用任何递归调用。您没有从方法中调用任何递归调用。