function max(array) {
if (array.length === 0) { // Step1: set up your base case
return array[0]
} else {
return Math.max(array.shift(), max(array); // Step2: rec case
}
}
Каждый раз, когда рекурсивный случай называется она получает его ближе к базовому случаю.
Math.max принимает два числа, затем сравнивает их, а затем возвращает высший из двух.
Каждый раз, когда вы вызываете array.shift(), вы выбиваете первый элемент массива из массива, поэтому второй аргумент в рекурсивном вызове - это массив, сокращенный на единицу.
Когда array.length имеет только один элемент, верните этот элемент и посмотрите, как стек разворачивается.
Рекурсия - это функция, вызывающая себя. Если функция передается массив значений, что вы хотите передать во внутренний вызов функции? –
Подсказка: max (a, b, c) = max (max (a, b), c). – mpen
http://stackoverflow.com/questions/1379553/how-might-i-find-the-largest-number-contained-in-a-javascript-array –