本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

前言

故事分享:相传印度有位外来的大臣跟国王下棋,国王输了,就答应满足他一个要求:在棋盘上放米粒。第一格放1粒,第二格放2粒,然后是4粒,8粒,16粒…直到放到64格。国王哈哈大笑,认为他很傻,以为只要这么一点米。按照大臣的要求,放满64个格,需米18446744073709551615粒,是二十位的数字。这些米别说倾空国库,就是整个印度,甚至全世界的米,都无法满足这个大臣的要求!

故事中的国王认为只需要一点米,但实际全世界的米加起来都无法满足这个要求,相同原理可知,如果用一张很小的纸进行反复折叠,那么是不是要折叠几千次才能达到珠穆朗玛峰的高度呢?

问题描述

世界上最高山峰是珠穆朗玛峰(8844.43米)。假如我有一张足够大的纸,它的厚度是0.1毫米。那么请问,我折叠多少次恰好可以折到珠穆朗玛峰的高度?

解决方法

已知珠穆朗玛峰的高度为8844430毫米,并且纸的厚度为0.1毫米。纸折叠一次其倍数翻一翻时,由于无法知晓折叠的次数,在这种情况下更适合使用while循环。

实验结果与讨论

通过定义变量,使用while循环语句等证明纸张折叠27次即可达到珠穆朗玛峰的高度,能够解决开头提出的问题。

代码清单

package sctu.edu.test.com;

 public class 珠穆朗玛峰 {

     public static void main(String[]  args) {

         int count = 0;

         double paper =0.1;//定义纸张的厚度

         int Mountain=8844430;//定义珠穆朗玛峰的高度

         while(paper <= Mountain){//条件判断

             paper *= 2;

             count++;

         }

         System.out.println("需要折叠:" + count + "次");

     }

 }

Java之“珠穆朗玛峰”_3d

结语

针对“珠穆朗玛峰”问题,通过定义count、paper、Mountain三个变量值,再结合while语句,最终实现折叠次数。在对“珠穆朗玛峰”案例的解决过程中进一步巩固while语句,并将继续Java的巩固联系。

实习编辑:衡辉