// 斐波那契数列(Fibonacci sequence),又称黄金分割数列
//其数值为:0、1、1、2、3、5、8、13、21、34……
//在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
const getFib = (n) => {
let fibArr = [];
i = 0;
while(i < n){
if(i <= 1){
fibArr.push(i)
} else {
fibArr.push(fibArr[i-1] + fibArr[i-2])
}
i++
}
return fibArr;
}
console.log(getFib(6)) //[0, 1, 1, 2, 3, 5]
0、1、1、2、3、5、8、13、21、34……求第n项
// 动态规则
const fib2 = (num) => {
if(num < 2){
return num;
}
const arr = [0, 1]
for(let i = 2; i< num; i++){
arr.push(arr[0] + arr[1])
// console.log(arr, 111)
arr.splice(0, 1)
// console.log(arr, 222)
}
// console.log(arr)
return arr[1]
}
console.log(fib2(7)) // 8
// 冒泡排序
const subbleSort = (arr) => {
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length -i; j++){
if(arr[j+1] < arr[j]){
let temp = arr[j+1]
arr[j+1]=arr[j]
arr[j] = temp;
}
}
}
return arr;
}
console.log(subbleSort([10, 8, 1, 3, 5,9,0])) //[0, 1, 3, 5, 8, 9, 10]
const arr1 = [1, 2, 3, 4]
const arr2 = [1, 2, 3, 4, 5, 6]
// 求数组交集
const intersectionFn = (arr1, arr2) => {
const result = arr1.filter(item1 => arr2.some(item2 => item1 === item2))
return result;
}
console.log(intersectionFn(arr1, arr2)) // [1, 2, 3, 4]
// 求数组补集 求arr1补集。数组属于arr2不属于arr1
const arr1 = [2, 3, 4]
const arr2 = [1, 2, 3, 4, 5, 6]
const complementFn = (arr1, arr2) => {
const result = arr2.filter(item2 => arr1.every(item1 => item1 !== item2))
return result;
}
console.log(complementFn(arr1, arr2)) // [5, 6]
// 求数组合集
const unionFn = (arr1, arr2) => {
const result = arr1.concat(arr2.filter(item2 => arr1.every(item1 => item1 !== item2)))
return result;
}
console.log(unionFn(arr1, arr2)) // [1, 2, 3, 4, 5, 6]