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))