-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathRecursiveMax.java
71 lines (56 loc) · 2.43 KB
/
RecursiveMax.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package quick_sort.java;
import java.util.List;
/**
* Задача. Найти наибольшее число в списке, используя рекурсию.
*/
public class RecursiveMax {
public static int i = 0; // начальный индекс элемента
public static int max = 0; // начальное максимальное значение
public static void main(String[] args) {
// Создать массив
int[] array = {2, 4, 0, -9, 21, 6};
// Вывести наибольшее число
System.out.println("Наибольшее число в массиве: " + RecursiveMax.findMax(array));
// Создать список
List<Integer> integerList = List.of(34, 3, 47, 91, 32, 0);
// Вывести наибольшее число из списка
System.out.println("Наибольшее число в списке: " +
RecursiveMax.findMaxInList(integerList));
}
/**
* Определяет наибольшее число в массиве
*
* @param array массив чисел
* @return наибольшее число
*/
private static int findMax(int[] array) {
// Проверяем, достигнут ли конец массива
if (array.length == i) {
return max;
}
// Определяем максимальный элемент
if (array[i] > max) {
max = array[i];
}
i++; // переходим к следующему элементу
return findMax(array);
}
/**
* Определяет наибольшее число в списке
*
* @param numbers список чисел
* @return наибольшее число из списка
*
* @see <a href="src/quick_sort/findMax.png"> Выполнение метода (изображение) </a>
*/
private static int findMaxInList(List<Integer> numbers) {
/* Если список состоит из одного
* элемента, возвращаем этот элемент */
if (numbers.size() == 1) {
return numbers.get(0);
}
int bottom = findMaxInList(numbers.subList(0, numbers.size() / 2));
int top = findMaxInList(numbers.subList(numbers.size() / 2, numbers.size()));
return Math.max(top, bottom);
}
}