Seguindo o código da professora, ao tentar buscar um valor inexistente na minha lista o erro imprimido no meu console foi diferente.
Código da aula:
const listaLivros = require('./arrayOrdenado');
function busca(array, de, ate, valorBuscado) {
console.log('de, ate', de, ate);
const meio = Math.floor((de + ate) / 2);
const atual = array[meio];
if(valorBuscado === atual.preco) {
return meio;
}
if(valorBuscado < atual.preco) {
return busca(array, de, meio - 1, valorBuscado);
}
if(valorBuscado > atual.preco) {
return busca(array, de + 1, ate, valorBuscado);
}
}
console.log(busca(listaLivros, 0, listaLivros.length - 1, 60));
erro que aparece no console:
if(valorBuscado === atual.preco) {
^
TypeError: Cannot read properties of undefined (reading 'preco')
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:16:31)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
at busca (C:\Users\Leonardo002\Desktop\Alura\Programação\JavaScript-Back-End\JavaScript II - Algoritmos de Ordenação e Busca\Aula4\busca.js:25:16)
Quando eu coloco a condicional de parada com "if(de > ate)" retornando -1, o erro some e tudo funciona normalmente. A minha dúvida é, porque no exemplo da professora deu erro de estouro de pilha, mas no meu deu erro de tipo? Escrevi alguma coisa errada no código e não percebi?