Но почему-то в консоли выводится undefined
Хотя если в браузере по коду построчно пройтись, все работает верно. Почему так?
function fastBinarySearchSorted (arr, num) {
if (arr.length === 0) {
return false
}
let index = Math.floor(arr.length/2)
let pivot = arr[index]
if (pivot === num) {
return true
}
else {
let arrLeft = arr.slice(0, index)
let arrRight = arr.slice(index+1, arr.length)
if (num < pivot) {
fastBinarySearchSorted (arrLeft, num)
}
else if (num > pivot) {
fastBinarySearchSorted (arrRight, num)
}
}
}
console.log(fastBinarySearchSorted ([3,4,7,9,12,15,77], 77))
Если перед return поставить console.log(true/false) и вызывать fastBinarySearchSorted ([3,4,7,9,12,15,77], 77) выводит что положено, но возвращает почему-то undefined
не забывайте делать ретурн везде где это необходимо. В вашем случае делайте ретурн перед рекурсивным вызовом
Так перед рекурсивным вызовом же непонятно ещё false или true там будет...
как это не понятно - функция рекурсивная вам и вернет true или false и этот результат вы и должны вернуть
Обсуждают сегодня