猜数字游戏的规则如下:

    每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
    如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
    你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):

    -1:我选出的数字比你猜的数字小 pick < num
    1:我选出的数字比你猜的数字大 pick > num
    0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
    返回我选出的数字。

    示例 1:

    输入:n = 10, pick = 6
    输出:6
    示例 2:

    输入:n = 1, pick = 1
    输出:1
    示例 3:

    输入:n = 2, pick = 1
    输出:1
    示例 4:

    输入:n = 2, pick = 2
    输出:2

    1. /**
    2. * Forward declaration of guess API.
    3. * @param {number} num your guess
    4. * @return -1 if num is lower than the guess number
    5. * 1 if num is higher than the guess number
    6. * otherwise return 0
    7. * var guess = function(num) {}
    8. */
    9. /**
    10. * @param {number} n
    11. * @return {number}
    12. */
    13. var guessNumber = function(n) {
    14. // 最小次数即每次选择中间数猜测
    15. const rec = (low, high) => {
    16. if (low > high) { return }
    17. // 取中间值
    18. const mid = Math.floor((low + high) / 2);
    19. const res = guess(mid);
    20. if (res === 0) {
    21. return mid
    22. } else if (res === 1) {
    23. return rec(mid + 1, high)
    24. } else {
    25. return rec(1, mid - 1)
    26. }
    27. }
    28. return rec(1, n)
    29. };

    image.png