1.找出数组中相加之和为10的两个数,将其下标输出,若没找到返回[-1,-1] ?
//找出数组中相加之和为10的两个数,将其下标输出,若没找到返回[-1,-1]
let arr = [1,5,3,7,5,9,2,4];
// let arr = [1,12,3,6,5,8,3,10];
function test(target) {
let res = [];//保存结果的数组
for (let i = 0; i < arr.length;i++){
for (let j = i + 1;j < arr.length;j++){
if (arr[i] + arr[j] === target){//若加起来等于target,则push到res里面
res.push({i:i,j:j});
}
}
}
if (res.length === 0){//循环结束后,判断是否有结果
res.push({i:-1,j:-1});
}
return res;
}
let res = test(10);
console.log(res);
2.斐波那契数列 1,1,2,3,5,8…
写出函数,要求找到第n位是多少
递归
function Fibnnacci(n) {
if(n === 0 || n === 1) return 1;
return Fibnnacci(n - 1) + Fibnnacci(n - 2);
}
console.log(Fibnnacci(5));
非递归
/**
* @return {number}
*/
function Fibnnacci(n) {
if (n === 0 || n === 1) return 1;
let first = 1,second = 1;
let result;
for (let i = 2; i <= n ;i++){
result = first + second;
first = second;
second = result;
}
return result;
}
console.log(Fibnnacci(5));
3.打乱数组