问题:
(1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.001米。
(2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
分析
折叠次数 1 2 3 4……n
纸的层数 2 4 8 16……2^i,使2向左位移i次
计算2的折叠次数幂
方法1:
- class Demo {
- public static void main(String[] args) {
- double page = 0.001;
- double hill = 8848.0;
- double high = 0;
- long i = 0;
- while (high <= hill) {
- high = (2 << i) * page; //使2向左位移i次,左移时,i = 0时相当于已经折叠了一次,
- i++;
- System.out.println(high);
- }
- System.out.println(i); //
- }
- }
复制代码
方法2:
class Demo3 {
public static void main(String[] args) {
double page = 0.001;
double hill = 8848.0;
double high = 0;
long i = 0;
while (high <= hill) {
high = Math.pow(2,i) * page; //Math.pow(x,y)调用数学类中幂次方方法
i++;
}
System.out.println(i-1);
}
}
大家有什么好的方法,欢迎回复! |
|