java - 递归地返回列表 t 中的最小元素

标签 java list recursion

我做了以下操作,但它返回错误并且似乎无法找出原因,请你们帮忙我的错误在哪里或丢失的东西很困惑。

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;
          }

最佳答案

无需创建临时变量。相反,您应该返回(如果元素少于两个)第一个元素。否则,返回第一个元素的最小值和子列表递归调用的结果。喜欢,

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())));
}

或者,在 Java 8+ 中并且没有递归,你可以做类似的事情

return t.stream().mapToInt(Integer::intValue).min().getAsInt();

关于java - 递归地返回列表 t 中的最小元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796299/

相关文章:

java - Flyway 没有选择我的 sql 文件进行迁移

java - Maven 在 CI 服务器上并发构建

java - neo4j QueryResult不会退出

jquery - 检查下拉列表中是否有值

java - 将对象/整数插入单链表并对其进行排序

python - 使用 "list.extend"时“int”对象不可迭代

c# - 如何从表示 C# 或 VB 中的目录结构的字符串列表创建集合

java - 根据环境属性启用CDI装饰器

java - 使用 Java 递归分解,处理 StackOverflow

c - 递归阶乘返回语句