1. /*
    2. 题目要求:如何确定一个数在一个有序数组中的位置
    3. arr:有序数组
    4. targetNum:目标值
    5. start:查找开始位置
    6. end:查找结束位置
    7. */
    8. function search(arr, targetNum, start, end) {
    9. let targetIndex = -1
    10. // 拿到中间值,注意用开始、结束位置取中间值,易错用数组长度
    11. const mid = Math.floor((start + end) / 2)
    12. // 判断一些边界条件
    13. if(arr[mid] === targetNum) {
    14. targetIndex = mid
    15. return targetIndex
    16. }
    17. // 注意:边界条件的判断,也是递归终止条件
    18. if(start >= end) {
    19. return targetIndex
    20. }
    21. if(targetNum < arr[mid]) {
    22. return search(arr, targetNum, start, mid - 1)
    23. } else {
    24. return search(arr, targetNum, mid + 1, end)
    25. }
    26. }
    27. var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    28. search(arr, 6, 6, arr.length - 1)