Добрый день! Подскажите пожалуйста как решить вот такую задачу при помощи рекурсии:
Подскажите пожалуйста как решить вот такую задачу при помощи рекурсии: Сделайте функцию inArray('hello', ['helloo', hello', 'hihi']), которая определяет, есть в массиве элемент с заданным текстом или нет. Функция первым параметром должна принимать текст элемента, а вторым - массив, в котором ищем. Функция должна вернуть true или false. вам поможет метод splice)
function inArray(str,mass){
for (let i = 0; i <= mass.length - 1; i ++){
if(str !== mass[i]){
mass.splice(0,1);
inArray(str,mass);
}
else return true;
}
}
console.log(inArray('hello', ['helloo', 'hello', 'hihi']));
Ответы (2 шт):
Автор решения: vsemozhebuty
→ Ссылка
Вам осталось добавить return для рекурсивного вызова и return на тот случай, если все элементы перебраны и ничего не нашлось (то есть — функция получила пустой массив и цикл не был запущен):
function inArray(str, mass){
for (let i = 0; i <= mass.length - 1; i++){
if(str !== mass[i]){
mass.splice(0, 1);
return inArray(str, mass);
}
else return true;
}
return false;
}
console.log(inArray('helloo', ['helloo', 'hello', 'hihi']));
console.log(inArray('hello', ['helloo', 'hello', 'hihi']));
console.log(inArray('hihi', ['helloo', 'hello', 'hihi']));
console.log(inArray('42', ['helloo', 'hello', 'hihi']));
Автор решения: Vlad Brusensky
→ Ссылка
function inArray(str, arr) {
if ( arr.length === 0 )
return false;
if ( arr[0] !== str ) {
return inArray( str, arr.splice(1,arr.length - 1) );
}
else
return true;
}