Исправить рекурсивный код (при условии, что в массиве есть хотя бы 1 элемент) -
public static int findBiggestNumber(int[] array, int number)
{
if(number == 1) //only one element is there in array
{
return array[number - 1];
}
return Math.max( array[number - 1] , findBiggestNumber(array,number-1) );
}
Рекурсивный код выполняется за O (n) времени, но имеет дополнительные пробелы O (n) из-за стек рекурсивных вызовов функций.
Why the recursive code has O(n) time ?
Это решает n-1
меньшие проблемы. И n
-ая задача решается в O (1) раз из результата n-1
-ой задачи.
How the recursive code works ?
Если у вас есть массив с массивом n
размера , тогда максимальный элемент этого массива либо
1. последний элемент array[n-1]
, либо
2. максимальный элемент массива n-1
.
Чтобы вычислить результат для массива размером n-1
, вы повторите то же самое.
Базовый случай, когда у вас есть только один элемент в массиве, тогда это максимум.