黑马程序员技术交流社区

标题: 大神在哪 [打印本页]

作者: zk342577507    时间: 2016-3-4 23:38
标题: 大神在哪
4.分析以下需求,并用代码实现:
        (1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.01米
        (2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。


作者: wx_F50m577j    时间: 2016-3-7 00:33
用递归做就可以了
作者: 芸芸众生    时间: 2016-3-7 00:42
for循环里面写个if语句就行了。
作者: 超人d咖啡也加糖    时间: 2016-3-7 11:54
public class Day4Test {
        public static void main(String[] args) {

                int times = 0; // 设置初始计数器
                double paperHeight = 0.1;// 假设一张纸的基本厚度是1cm
                while (paperHeight <= 884443) {// 假设珠穆朗玛峰的高度是884800cm
                        paperHeight *= 2;
                        times++;
                }
                System.out.println("需要折纸的次数为:" + times);// 输出次数
                System.out.println("纸张最后的高度为:" + paperHeight);// 输出最后纸张的高度
        }

}

作者: and4576sdo    时间: 2016-3-7 12:09
这是for循环解决的问题呀
作者: shiax11    时间: 2016-3-7 13:10
可以用递归
作者: 超人d咖啡也加糖    时间: 2016-3-7 13:44
超人d咖啡也加糖 发表于 2016-3-7 11:54
public class Day4Test {
        public static void main(String[] args) {

写错一个地方,纸张的厚度为1厘米才对,也就是paperHeight=1,这是改过的

public class Day4Test {
        public static void main(String[] args) {

                int times = 0; // 设置初始计数器
                double paperHeight = 1;// 假设一张纸的基本厚度是1cm
                while (paperHeight <= 884443) {// 假设珠穆朗玛峰的高度是884843cm
                        paperHeight *= 2;
                        times++;
                }
                System.out.println("需要折纸的次数为:" + times);// 输出次数
                System.out.println("纸张最后的高度为:" + paperHeight);// 输出最后纸张的高度

        }
}
作者: 奋飞的小模糊    时间: 2016-3-7 15:09
class D {
        public static void main (String[]args) {
                int i=1;
                while (true) {
                        int temp = 1<<i;
                        if (temp>=8848000) {
                                break;
                        }
                        i++;
                }
                System.out.println("折"+i+"次可达到珠穆朗玛峰的高度");
               
       
        }
}//折24次可达到珠穆朗玛峰的高度
作者: 奋飞的小模糊    时间: 2016-3-7 15:11
奋飞的小模糊 发表于 2016-3-7 15:09
class D {
        public static void main (String[]args) {
                int i=1;

一:利用死循环,用break,跳出
二:采用位操作,提高运算效率(注意先把小数转换成整数才能位操作)
作者: 与子成说    时间: 2016-3-7 15:12
很简单的一个for或者while()循环
作者: Do、    时间: 2016-3-7 19:12
超人d咖啡也加糖 发表于 2016-3-7 11:54
public class Day4Test {
        public static void main(String[] args) {

你的paperHeight *= 2;是什么意思
作者: 超人d咖啡也加糖    时间: 2016-3-8 13:34
Do、 发表于 2016-3-7 19:12
你的paperHeight *= 2;是什么意思

折一次高度变成原来的2倍
作者: mycoder    时间: 2016-3-8 22:42
while循环就可以
作者: mycoder    时间: 2016-3-8 22:43
while循环就可以做
作者: docwei    时间: 2016-3-10 00:09
很明显这个不知道要折叠多少次,肯定是while循环啊




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