摘要:解題思路就是選擇兩個數字,一個最小值和一個最大值,取這兩者的平均值作為判斷。判斷的數字小了,就減小最大值。用遞歸使取值的范圍逐漸縮小。當取值等于目標值的時候,打印這個值,并結束遞歸。
解題思路就是選擇兩個數字,一個最小值和一個最大值,取這兩者的平均值作為判斷。
判斷的數字大了,就增大最小值。
判斷的數字小了,就減小最大值。
用遞歸使取值的范圍逐漸縮小。
當取值等于目標值的時候,打印這個值,并結束遞歸。
這里遇到了一個問題,比如當用戶輸入了一個數字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語言程序設計 所有代碼都展示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)勢是把所有可能...
摘要:而且我們一直在講的,也可以用中文來編程。帶來的一個額外功能就是,你可以使用中文作為變量名。另外如果在代碼里寫中文,別忘了在開頭加上或的聲明。 現代計算機和編程的起源和推動力量主要源自美國,再加上26個字母很便于表示(算上大小寫,6位bit就夠了),因此英語一直是編程領域的不二之選。但這就給部分非英語國家的編程學習者帶來一些困擾。以至于有些人還沒開始學,就擔心自己的英語問題。這完全沒必要...
摘要:猜對則本次猜測免費,猜錯則本次猜測需要花費和數字等額的金錢。其實這題的英文表述有些問題,確切來說,在所有能夠確保找到目標值的方法中,找到花費金錢最少的哪種。當等于時,即從中找到目標數字,確保找到一個數字至少需要多少錢。 題目要求 We are playing the Guess Game. The game is as follows: I pick a number from 1 ...
摘要:謝耳朵愛玩的游戲,石頭剪子布的升級版。擁有最高點數的玩家獲勝,其點數必須等于或低于點。在編寫這個游戲的過程中第一次引入了類概念。宇宙空間中微小的摩擦力和隕石撞擊后受到的力,都要考慮并且編入游戲中。 人人都應該學編程嗎?隨著每個人的工作與電腦連結愈發(fā)緊密,也許這是真的。 我是游戲設計師,在分工細致的國內網游業(yè)界,不需要研發(fā)或美術背景也能擔當游戲設計重任的角色多了起來。有時候他們甚至只需...
閱讀 1250·2021-11-15 11:37
閱讀 2260·2021-09-30 09:55
閱讀 4539·2021-09-22 15:51
閱讀 3760·2021-09-22 15:46
閱讀 2781·2019-08-30 15:52
閱讀 438·2019-08-29 16:20
閱讀 2903·2019-08-29 15:12
閱讀 1163·2019-08-26 18:27