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