我是Java的新手并且正在进行递归练习。我找到了这个网站,我真的可以帮助解决这个问题并解释如何解决这个问题。这是否需要拆分数组或以其他方式解决?
到目前为止包括的内容如下:
public class RecursionUtils extends Object { public static final int findMaxRecursively(List<Integer> numbers) { return 0;
为了完成代码,需要以下内容:
findMaxRecursively
- 醇>
获取一个数字列表,并使用递归调用查找其中最大的数字。
@param为数字列表编号,可以是奇数或偶数
@return列表中最大的数字。
提示:您的基本情况可能是2个数字的比较。回报 价值也必须改变。
任何帮助都会受到赞赏,所以我可以更好地理解递归。
答案 0 :(得分:1)
试试这个:
private static final int findMaxRecursively(List<Integer> numbers, int index, int max) {
return index >= numbers.size()
? max
: findMaxRecursively(numbers, index + 1, Math.max(numbers.get(index), max));
}
public static final int findMaxRecursively(List<Integer> numbers) {
return findMaxRecursively(numbers, 0, Integer.MIN_VALUE);
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, -1, 2, -2, 3, -3);
System.out.printf("Max is %d in %s%n", findMaxRecursively(numbers), numbers);
}
答案 1 :(得分:0)
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class RecursionUtils extends Object {
public static final int findMaxRecursively(List<Integer> numbers) {
if (numbers.size() > 0) {// terminating condition... if there are no
// elements remaining in the list then
// return 0..
int num1 = numbers.remove(0); // remove the first element of the
// list, thus in the process we
// truncate the list by one element.
int num2 = findMaxRecursively(numbers); // find the max from the
// rest of the list..
return num1 > num2 ? num1 : num2;
} else
return 0;
}
public static void main(String[] args) {
List<Integer> numbers = new LinkedList<>();
numbers.addAll(Arrays
.asList(new Integer[] { -1, -2, -3, 0, 6, 5, 3, 2 }));
System.out.println("The entered list is :");
System.out.println(numbers);
System.out.println("\nThe max element is : "
+ findMaxRecursively(numbers));
}
}