黑马程序员技术交流社区

标题: 珠峰问题 [打印本页]

作者: iverchen    时间: 2015-10-1 23:22
标题: 珠峰问题
相信各位在学习循环的时候都遇到那个珠峰的问题,就是一张足够大的纸厚0.01 m,要对折多少次才能到珠峰的高度8848m, 我很想知道是用什么运算方法,求大神告知一下。
就是想问下怎么运算的,使用加减乘除 还是什么运算法则 。 不求代码。感觉很熟悉的初中题,但是就是做不出来········

作者: 大地z灵    时间: 2015-10-2 00:43
定义纸厚x*=0.01,没叠一次统计值加1,当x大于8848时统计值就是结果啊。
作者: llwhcm    时间: 2015-10-2 01:50
对折就是乘以2呀,乘以2乘以2乘以2.....一直到大于或者等于8848就可以了
作者: 太子奕    时间: 2015-10-2 01:52
0.01*2^X>8848求X的值。
作者: 313098819    时间: 2015-10-2 13:46
,折叠就是1变2,2变4,4变8.所以厚度就是2*0.01,2*2*0.01,2*2*2*0.01....n^n*0.01所以n^n*0.01=8848.所以我们要求
的就是n.
double num = 0.01;    //一张纸的厚度

while(num<8848) {

}
作者: 王贺明    时间: 2015-10-2 13:52
可以用递归来做
作者: 313098819    时间: 2015-10-2 14:02
313098819 发表于 2015-10-2 13:46
,折叠就是1变2,2变4,4变8.所以厚度就是2*0.01,2*2*0.01,2*2*2*0.01....n^n*0.01所以n^n*0.01=8848.所以我们 ...

刚刚点错了
       double num = 0.01;     //一张的厚度
        int count = 0;            //计算次数         
        while(num<8848){      //循环语句判断方法,
                        num*=2;   //折叠时后的厚度.
                        count++;   //每循环一次加一.
        }

        System.out.println(count);
作者: yuzhouyichen    时间: 2015-10-2 17:41
楼上正解
作者: iverchen    时间: 2015-10-2 18:15
谢谢各位大神      


不过自己用加减乘除运算,还是想不通.......太打击信心了
作者: beyond1337    时间: 2015-10-2 23:50
iverchen 发表于 2015-10-2 18:15
谢谢各位大神      

怎么想不通了啊,我也自己做出来的,就是不会代码体现吧。。
思维得灵活。
作者: iverchen    时间: 2015-10-2 23:55
313098819 发表于 2015-10-2 14:02
刚刚点错了
       double num = 0.01;     //一张的厚度
        int count = 0;            //计算次数        ...

这代码果然简洁明了 谢谢 ,不过还是自己用笔和纸不能计算出来··········




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2