成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

劉德剛 / 1140人閱讀

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

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

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

// 初始值
var number = 100
// 猜數(shù)次數(shù)
var time = 0
// 每次猜的數(shù)字
var temp = null
// 標(biāo)記上一次是猜大了還是猜小了
var stamp = null
// 存放猜過(guò)的數(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)
  // 將猜過(guò)的數(shù)字放進(jìn)一個(gè)數(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)
  }
}

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99952.html

相關(guān)文章

  • 【浙大翁愷C語(yǔ)言】從0入門筆記【國(guó)家精品課程】(上)

    C語(yǔ)言程序設(shè)計(jì) 所有代碼都展示main函數(shù)里面的代碼 計(jì)算機(jī)的思維 輾轉(zhuǎn)相除法 int u = 32;int v = 32;//如果v=0,計(jì)算結(jié)束,u就是最大公約數(shù)//v!=0計(jì)算u/v的余數(shù),讓u=v v=余數(shù)while(v!+0){ int temp = u%v; u = v; v = temp;}printf(%d,u); 從計(jì)算機(jī)到程序再到算法 計(jì)算機(jī)的思維和優(yōu)勢(shì)是把所有可能...

    ziwenxie 評(píng)論0 收藏0
  • python里能不能中文

    摘要:而且我們一直在講的,也可以用中文來(lái)編程。帶來(lái)的一個(gè)額外功能就是,你可以使用中文作為變量名。另外如果在代碼里寫中文,別忘了在開頭加上或的聲明。 現(xiàn)代計(jì)算機(jī)和編程的起源和推動(dòng)力量主要源自美國(guó),再加上26個(gè)字母很便于表示(算上大小寫,6位bit就夠了),因此英語(yǔ)一直是編程領(lǐng)域的不二之選。但這就給部分非英語(yǔ)國(guó)家的編程學(xué)習(xí)者帶來(lái)一些困擾。以至于有些人還沒開始學(xué),就擔(dān)心自己的英語(yǔ)問(wèn)題。這完全沒必要...

    anquan 評(píng)論0 收藏0
  • leetcode375. Guess Number Higher or Lower II

    摘要:猜對(duì)則本次猜測(cè)免費(fèi),猜錯(cuò)則本次猜測(cè)需要花費(fèi)和數(shù)字等額的金錢。其實(shí)這題的英文表述有些問(wèn)題,確切來(lái)說(shuō),在所有能夠確保找到目標(biāo)值的方法中,找到花費(fèi)金錢最少的哪種。當(dāng)?shù)扔跁r(shí),即從中找到目標(biāo)數(shù)字,確保找到一個(gè)數(shù)字至少需要多少錢。 題目要求 We are playing the Guess Game. The game is as follows: I pick a number from 1 ...

    focusj 評(píng)論0 收藏0
  • 正則之基本入門

    摘要:忽略大小寫全文查找出現(xiàn)的所有匹配字符多行查找全文查找忽略大小寫所以使用之后可以這樣寫表示忽略大小寫匹配或者正式入門正則正則其實(shí)就是用來(lái)匹配字符串的。惰性量詞使用方法基本量詞該量詞和貪婪量詞就像,一個(gè)是消極怠工,一個(gè)是積極工作。 以前看了許許多多的正則教程,收貨并不多,往往都是蜻蜓點(diǎn)水,一點(diǎn)就過(guò)。事實(shí)上,正則用處真的超級(jí)大,比如匹配innerHTML的內(nèi)容,以及表單驗(yàn)證,也是非他莫屬。這...

    ormsf 評(píng)論0 收藏0
  • 實(shí)踐出真知:零基礎(chǔ)小白學(xué)編程做游戲 14 周歷程

    摘要:謝耳朵愛玩的游戲,石頭剪子布的升級(jí)版。擁有最高點(diǎn)數(shù)的玩家獲勝,其點(diǎn)數(shù)必須等于或低于點(diǎn)。在編寫這個(gè)游戲的過(guò)程中第一次引入了類概念。宇宙空間中微小的摩擦力和隕石撞擊后受到的力,都要考慮并且編入游戲中。 人人都應(yīng)該學(xué)編程嗎?隨著每個(gè)人的工作與電腦連結(jié)愈發(fā)緊密,也許這是真的。 我是游戲設(shè)計(jì)師,在分工細(xì)致的國(guó)內(nèi)網(wǎng)游業(yè)界,不需要研發(fā)或美術(shù)背景也能擔(dān)當(dāng)游戲設(shè)計(jì)重任的角色多了起來(lái)。有時(shí)候他們甚至只需...

    haitiancoder 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<