Вы можете изменить сигнатуру функции, потому что вызов функции поиска должен быть возможен без начального индекса для поиска.
function linearSearchRecursively(a, x, i = 0) {
if (i >= a.length) return -1;
if (a[i] === x) return i;
return linearSearchRecursively(a, x, i + 1);
}
console.log(linearSearchRecursively([1, 2, 3, 4, 5, 6, 7], 7));
console.log(linearSearchRecursively([1, 2, 3, 4, 5, 6, 7], 9));
console.log(linearSearchRecursively([], 7));
Другим решением может быть использование деструктуризации для массива и проверка по первому элементу.
function linearSearchRecursively([a, ...rest], x, i = 0) {
if (a === x) return i;
if (!rest.length) return -1;
return linearSearchRecursively(rest, x, i + 1);
}
console.log(linearSearchRecursively([1, 2, 3, 4, 5, 6, 7], 7));
console.log(linearSearchRecursively([1, 2, 3, 4, 5, 6, 7], 9));
console.log(linearSearchRecursively([], 7));