Найти 2 элемента массива, сумма которых равна заданному числу JS
Дан массив из чисел Фибоначчи, дано некоторое число X, нужно написать программу, которая найдет в массиве все пары целых чисел, сумма которых равна заданному значению(X), и вывести true иначе вывести false.
Пример А
Если нам дали массив Фибоначчи [ 0, 1, 1, 2, 3, 5, 8, 13,] и значение 12, функция вернет false, потому что никакие Два числа из массива не могут дать 12 в сумме.
Пример Б
Но если этот массив Фибоначчи [ 0, 1, 1, 2, 3, 5, 8, 13, 21,] и значение 22, функция должна вернуть true, потому что 21 + 1 = 22.
function fib(n) {
let arr = [0, 1];
for (let i = 2; i <= n; i++) {
arr.push(arr[i - 1] + arr[i - 2])
}
console.log(arr);
return arr[n];
}
function f(n, arr) {
return arr.some((i) => arr.includes(n - i));
}
console.log(fib(8));
console.log(f(20, [1, 1, 2, 3, 5, 8, 13, 21]));
Ответы (2 шт):
Автор решения: Const_Int
→ Ссылка
function fibonacci(n){
let arr = [0, 1];
for (let i = 2; i <= n; i++){
arr.push(arr[i - 1] + arr[i - 2])
}
return arr;
}
let array = fibonacci(21);
let inputNum = +prompt('Input Number: 1 - 10000', '');
function func(num, arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] == num) {
console.log(arr[i],'+',arr[j],'=', num);
console.log(arr);
return true;
}
}
}
console.log(num, arr);
return false;
}
console.log(func(inputNum, array));
Автор решения: Vitaliy Badalov
→ Ссылка
function f(sum, arr) => {
return arr.some(
(item, index) => arr.findIndex((p, i) => i != index && p === sum - item) > 0);
}