国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Js實現給一個1-100的數字,讓計算機用最少的次數猜中這個數字

劉德剛 / 1142人閱讀

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

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

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

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

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

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

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99952.html

相關文章

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

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

    ziwenxie 評論0 收藏0
  • python里能不能中文

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

    anquan 評論0 收藏0
  • leetcode375. Guess Number Higher or Lower II

    摘要:猜對則本次猜測免費,猜錯則本次猜測需要花費和數字等額的金錢。其實這題的英文表述有些問題,確切來說,在所有能夠確保找到目標值的方法中,找到花費金錢最少的哪種。當等于時,即從中找到目標數字,確保找到一個數字至少需要多少錢。 題目要求 We are playing the Guess Game. The game is as follows: I pick a number from 1 ...

    focusj 評論0 收藏0
  • 正則之基本入門

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

    ormsf 評論0 收藏0
  • 實踐出真知:零基礎小白學編程做游戲 14 周歷程

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

    haitiancoder 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<