黑马程序员技术交流社区

标题: 求解关于循环的问题 [打印本页]

作者: 小痞痞    时间: 2013-9-19 14:38
标题: 求解关于循环的问题
本帖最后由 小痞痞 于 2013-9-19 16:16 编辑

我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。
请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
  1. int sum = 0;
  2.                 for (double d = 0.01;d <= 8848 ;d *= 2 ) {
  3.                         sum++;
  4.                 }
  5.                 System.out.println("一共折叠" + sum + "次");
复制代码
最后输出的结果是sum=20;
感觉结果应该不对吧
不知道哪里出问题了
作者: 麦子609    时间: 2013-9-19 15:15
一张纸对折最多不超过7次  但是就这个题来说,20是对的吧 你可以算一下,折叠20次后的高度是0.01*(2的20次方)
作者: 小痞痞    时间: 2013-9-19 15:50
麦子609 发表于 2013-9-19 15:15
一张纸对折最多不超过7次  但是就这个题来说,20是对的吧 你可以算一下,折叠20次后的高度是0.01*(2的20次 ...

想这样算的结果应该是对的   但是估计是个人的思想吧    感觉对折20次不够   嘿嘿

作者: straw    时间: 2013-9-19 15:57
是对的,我帮你算了,叠第19此不够,第20此就超过了
  1. public class Demo {
  2.         public static void main(String[] ages){
  3.                 double height=8848;
  4.                 int i=0;
  5.                 double num=0.01;
  6.                 while(true){
  7.                         num=num*2;
  8.                         i++;
  9.                         if(num>=height){
  10.                                 break;
  11.                         }
  12.                 }
  13.                 System.out.println("折叠了i次="+i+"  纸厚度num="+num);
  14.         }
  15. }
复制代码
输出:折叠了i次=20  纸厚度num=10485.76
作者: 小痞痞    时间: 2013-9-19 16:14
straw 发表于 2013-9-19 15:57
是对的,我帮你算了,叠第19此不够,第20此就超过了输出:折叠了i次=20  纸厚度num=10485.76 ...

恩恩   谢了哈     我写的那个忘记输出最后的厚度了     自己感觉数据好小   嘿嘿





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