一张纸可以对折多少次呢?是否可以无限对折下去?相信很多同学可能都会有这么的疑惑,其实早在2011年,美国德克萨斯州圣马克中学的师生们将一张近4公里长的厕纸对折了13次,为完成实验,他们把场地定在了麻省理工大学200多米长的走廊里,经过四个多小时对折13次后,厕纸达到了8192层。

纸张是有厚度的,在折叠一定次数后,纸的厚度会超过宽度,这时纸张就无法继续折叠了。每次对半折叠使得纸的厚度加倍,所以厚度为t的一张纸折叠n次的厚度是2nt。与此同时,每折叠两次都会使宽度减半,因此,n次折叠后,宽度从原来的w减少到(1/2)^(n/2)w。当纸的总厚度等于它的宽度时,就不能再折叠。实际生活中,一张A4纸在对折6次以后就难以继续对折了。

假设有一张无限大且可以次无限折叠的纸,通过数学计算来分析这张纸对折以后的厚度变化。纸张厚度为0.1毫米,对折一次以后厚度0.2毫米,对折两次0.4毫米。由于纸张厚度较小,要对折15次才能突破3米。但是随着对折次数的增加,厚度增加的速度也变得越来越快,对折20次厚度超过100米。到27次时超过13000米,轻松超越了珠穆朗玛峰的高度。达到37次时达到13742千米,这就超过了地球的直径。一张纸经过不断地对折,就能够突破人类已知宇宙的边界,这就是指数爆炸的魔力。

下面通过Scratch来模拟纸张对折的数据,看看需要对折多少次可以超过地月距离的38万千米。

为了能够更加直观的查看统计,创建三个列表,分别是“对折的次数”“纸张的厚度”“对折后的高度”。每对折一次,对折次数加1,纸张的厚度翻倍(2^n)。假设纸张的高度为0.1毫米=0.0001米,那么对折的高度也就是纸张的厚度乘0.1毫米。第一次对折,高度为0.0002,第二次对折,高度为0.0004,第三次对折,高度为0.0008,在对折15次后,纸张的高度可以到达3米以上了,如果可以对折42次,其高度近似等于43万千米,就可以到达月球了。

设置三个变量用于存储对折次数、纸张厚度,以及对折后的高度,并赋予初始值,当程序开始运行后,首先是删除三个列表中的所有的数据,其次询问用户想达到的高度(单位是米),然后程序进入重复循环的过程,直到对折后的高度超出了用户输入的高度结束循环。在循环过程中,会依次向三个列表中逐行添加数据,对折次数逐步递增(1,2,3,4,5……),纸张厚度是成倍数递增(2,4,8,16,32,2^n)。

Scratch中没有直接表示2^n,要借用e^和in转换一下。

大家可以回忆一下棋盘麦子、汉诺塔等,在算法上有哪些相似的地方。

编辑|张毅

审核|吴新

爆料联系:cpcfan1874(微信)

壹零社:用图文、视频记录科技互联网新鲜事、电商生活、云计算、ICT领域、消费电子,商业故事。《中国知网》每周全文收录;中国科技报刊100强;2021年微博百万粉丝俱乐部成员;2022年抖音优质科技内容创作者