1.疾速排序

取出数组第一个元素,以这个数为基准,比它小的放右边,比它大的放左边,而后对左右两边的数组别离递归,失去一个升序数组:

const quickSort = (arr) => {  if (arr.length <= 1) return arr  let firstItem = arr.shift()  let leftArr = []  let rightArr = []  for (let item of arr) {    if (item <= firstItem) {      leftArr.push(item)    } else {      rightArr.push(item)    }  }  return quickSort(leftArr).concat(firstItem, quickSort(rightArr))}console.log(quickSort([5, 17, 4, 22, 54, 55, 32]))

2.爬楼梯

爬楼梯每次能够爬 1 层或者 2 层,那么爬 n 层有多少种办法:

const climb = (n) => {  if (n === 1) return 1  if (n === 2) return 2  // 如果要爬到第 n 层,能够分为从第 n-1 层爬上去或者 n-2 层间接爬上去两种  return climb(n - 1) + climb(n - 2)}console.log(climb(3), climb(4), climb(5))