小區(qū)附近新開了一家書店,周五放學(xué)后,嶺童小子直奔書店,他想買一本關(guān)于算法的書,周末在家自學(xué)。他站在計(jì)算機(jī)類的書架前來來回回地翻看著,終于精挑細(xì)選了一本。
回到家的嶺童小子意猶未盡,決定“為難”一下星空,逗他玩玩。
星空真的有“讀心術(shù)”。不過,你也可以擁有同款“讀心術(shù)”。讓我們一起來看看星空是怎么做到的吧。
第一步,確定猜價(jià)區(qū)間后,在1—100的區(qū)間內(nèi)取中間值50。代碼見圖1。
第二步,調(diào)整區(qū)間上限。因?yàn)榈谝淮尾聹y(cè)的50高于正確價(jià)格,所以第二次猜價(jià)時(shí)把最高價(jià)格設(shè)置為50,將猜價(jià)區(qū)間調(diào)整為1—50。再次猜測(cè)價(jià)格,在1—50的區(qū)間內(nèi)取中間值25。代碼見圖2。
第三步,調(diào)整區(qū)間下限。因?yàn)榈诙尾聹y(cè)的25低于正確價(jià)格,所以第三次猜價(jià)時(shí)把最低價(jià)格設(shè)置為25,將猜價(jià)區(qū)間調(diào)整為25—50。再次猜測(cè)價(jià)格,在25—50的區(qū)間內(nèi)取中間值37。代碼見圖3。
如此反復(fù),根據(jù)提示調(diào)整區(qū)間,并從新的區(qū)間內(nèi)取中間值,直到猜對(duì)為止。
以中間值作為新的猜測(cè)數(shù)據(jù),每猜一次,猜價(jià)區(qū)間都會(huì)減少一半,這樣能大大提高猜價(jià)效率,這就是“讀心術(shù)”的秘訣所在。在計(jì)算機(jī)編程中,這種方法叫“二分算法”。
你們看懂了嗎?掃描下方小程序碼,看看長沙市芙蓉區(qū)馬坡嶺小學(xué)學(xué)生的優(yōu)秀作品吧!
曹曉敏 :湖南省特級(jí)教師、省優(yōu)秀科技輔導(dǎo)員,長沙市首批卓越教師、市骨干教師。長沙市芙蓉區(qū)馬坡嶺小學(xué)信息技術(shù)教師。
發(fā)明與創(chuàng)新·小學(xué)生2023年10期