A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iverchen 初级黑马   /  2015-10-1 23:22  /  1264 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

10 个回复

倒序浏览
定义纸厚x*=0.01,没叠一次统计值加1,当x大于8848时统计值就是结果啊。
回复 使用道具 举报
对折就是乘以2呀,乘以2乘以2乘以2.....一直到大于或者等于8848就可以了
回复 使用道具 举报
太子奕 来自手机 中级黑马 2015-10-2 01:52:13
板凳
0.01*2^X>8848求X的值。
回复 使用道具 举报
,折叠就是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) {

}
回复 使用道具 举报
可以用递归来做
回复 使用道具 举报
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);
回复 使用道具 举报
楼上正解
回复 使用道具 举报
谢谢各位大神      


不过自己用加减乘除运算,还是想不通.......太打击信心了
回复 使用道具 举报
iverchen 发表于 2015-10-2 18:15
谢谢各位大神      

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

这代码果然简洁明了 谢谢 ,不过还是自己用笔和纸不能计算出来··········
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马