陳新龍
一張紙可以對(duì)折多少次呢?是否可以無(wú)限對(duì)折下去?相信很多同學(xué)可能都會(huì)有這樣的疑惑,其實(shí)早在2011 年,美國(guó)得克薩斯州圣馬克中學(xué)的師生們將一張近4 公里長(zhǎng)的廁紙對(duì)折了13次,為完成實(shí)驗(yàn),他們把場(chǎng)地定在了麻省理工大學(xué)200多米長(zhǎng)的走廊里,經(jīng)過(guò)四個(gè)多小時(shí)對(duì)折13 次后,廁紙達(dá)到了8192 層。
紙張是有厚度的,在折疊一定次數(shù)后,紙的厚度會(huì)超過(guò)寬度,這時(shí)紙張就無(wú)法繼續(xù)折疊了。每次對(duì)半折疊使得紙的厚度加倍,所以厚度為t 的一張紙折疊n 次的厚度是2nt。與此同時(shí),每折疊兩次都會(huì)使寬度減半,因此,n 次折疊后,寬度從原來(lái)的w減少到(1/2)^(n/2)w。當(dāng)紙的總厚度等于它的寬度時(shí),就不能再折疊。實(shí)際生活中,一張A4 紙?jiān)趯?duì)折6 次以后就難以繼續(xù)對(duì)折了。
假設(shè)有一張無(wú)限大且可以無(wú)限折疊的紙,通過(guò)數(shù)學(xué)計(jì)算來(lái)分析這張紙對(duì)折以后的厚度變化。紙張厚度為0.1 毫米,對(duì)折一次以后厚度0.2 毫米,對(duì)折兩次0.4 毫米。由于紙張厚度較小,要對(duì)折15 次才能突破3 米。但是隨著對(duì)折次數(shù)的增加,厚度增加的速度也變得越來(lái)越快,對(duì)折20 次厚度超過(guò)100 米。到27 次時(shí)超過(guò)13000 米,輕松超越了珠穆朗瑪峰的高度。達(dá)到37 次時(shí)達(dá)到13742 千米,這就超過(guò)了地球的直徑。一張紙經(jīng)過(guò)不斷的對(duì)折,就能夠突破人類已知宇宙的邊界,這就是指數(shù)爆炸的魔力。
下面通過(guò)Scratch 來(lái)模擬紙張對(duì)折的數(shù)據(jù),看看需要對(duì)折多少次可以超過(guò)地月的距離38 萬(wàn)千米。
為了能夠更加直觀地查看統(tǒng)計(jì),創(chuàng)建三個(gè)列表,分別是“對(duì)折的次數(shù)”“紙張的厚度”“對(duì)折后的高度”。每對(duì)折一次,對(duì)折次數(shù)加1,紙張的厚度翻倍(2^n)。假設(shè)紙張的高度為0.1毫米=0.0001米,那么對(duì)折的高度也就是紙張的厚度乘0.1毫米。第一次對(duì)折,高度為0.0002,第二次對(duì)折,高度為0.0004,第三次對(duì)折,高度為0.0008,在對(duì)折15 次后,紙張的高度可以達(dá)到3 米以上了,如果可以對(duì)折42 次,其高度近似等于43 萬(wàn)千米,就可以到達(dá)月球了(如圖1)。
設(shè)置三個(gè)變量用于存儲(chǔ)對(duì)折次數(shù)、紙張厚度,以及對(duì)折后的高度,并賦予初始值,當(dāng)程序開(kāi)始運(yùn)行后,首先是刪除三個(gè)列表中的所有數(shù)據(jù),其次詢問(wèn)用戶想達(dá)到的高度(單位是米),然后程序進(jìn)入重復(fù)循環(huán)的過(guò)程,直到對(duì)折后的高度超出了用戶輸入的高度結(jié)束循環(huán)。在循環(huán)過(guò)程中,會(huì)依次向三個(gè)列表中逐行添加數(shù)據(jù),對(duì)折次數(shù)逐步遞增(1,2,3,4,5……),紙張厚度是成倍數(shù)遞增(2,4,8,16,32,2^n)。
Scratch 中不能直接表示2^n,要借用e^ 和in 轉(zhuǎn)換一下(如圖2)。
大家可以回憶一下棋盤(pán)麥子、漢諾塔等,在算法上有哪些相似的地方。