亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

用Js實(shí)現(xiàn)給一個1-100的數(shù)字,讓計算機(jī)用最少的次數(shù)猜中這個數(shù)字

劉德剛 / 1227人閱讀

摘要:解題思路就是選擇兩個數(shù)字,一個最小值和一個最大值,取這兩者的平均值作為判斷。判斷的數(shù)字小了,就減小最大值。用遞歸使取值的范圍逐漸縮小。當(dāng)取值等于目標(biāo)值的時候,打印這個值,并結(jié)束遞歸。

解題思路就是選擇兩個數(shù)字,一個最小值和一個最大值,取這兩者的平均值作為判斷。
判斷的數(shù)字大了,就增大最小值。
判斷的數(shù)字小了,就減小最大值。
用遞歸使取值的范圍逐漸縮小。
當(dāng)取值等于目標(biāo)值的時候,打印這個值,并結(jié)束遞歸。

這里遇到了一個問題,比如當(dāng)用戶輸入了一個數(shù)字1,代碼中的number會變得足夠小,取值范圍最后會有 1-4 和 1-3,這兩個范圍的平均值向下取整后,都為2,最后發(fā)現(xiàn)會重復(fù)打印兩個數(shù)字2。
所以我加入了一個數(shù)組,將猜過的數(shù)字放入數(shù)組中,如果當(dāng)前猜的數(shù)字已存在數(shù)組中,就再用一個stamp做判斷,看上一次是猜大了還是猜小了,猜小了就加一,猜大了就減一。

// 初始值
var number = 100
// 猜數(shù)次數(shù)
var time = 0
// 每次猜的數(shù)字
var temp = null
// 標(biāo)記上一次是猜大了還是猜小了
var stamp = null
// 存放猜過的數(shù)字
var array = []
function guess (target, min = 1, max = 100) {
  // 判斷給的數(shù)字是否在范圍內(nèi)
  if (target > 100 || target < 1) {
    console.log("要1到100的數(shù)字哦!")
    return
  }
  temp = Math.floor((max + min) / 2)
  temp = tempChange(temp)
  // 將猜過的數(shù)字放進(jìn)一個數(shù)組里
  array.push(temp)
  number = Math.floor(number / 2)
  if (number === 0) number = 1
  if (target === temp) {
    console.log("第" + ++time + "次,我猜是" + temp + "%c bingo!", "color: green")
    return
  } else if (target >= min + number) {
    console.log("第" + ++time + "次,我猜是" + temp + "%c 小了!", "color: red")
    // 猜小了,標(biāo)記為true
    stamp = true
    guess(target, min + number, max)
  } else if (target <= max - number) {
    console.log("第" + ++time + "次,我猜是" + temp + "%c 大了!", "color: red")
    // 猜大了,標(biāo)記為false
    stamp = false
    guess(target, min, max - number)
  }
}

// 判斷這個數(shù)字是否已經(jīng)猜過
function tempChange (temp) {
  if (array.indexOf(temp) !== -1) {
    if (stamp) {
      temp++
    } else {
      temp--
    }
  }
  return temp
}
guess(9)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/99952.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)