题解 | #求小球落地5次后所经历的路程和第5次反弹的高度#
求小球落地5次后所经历的路程和第5次反弹的高度
http://www.nowcoder.com/practice/2f6f9339d151410583459847ecc98446
除了第一次小球落地没有往返外,后面的每一次路程都包括小球弹起和小球落地,所以总路程就是从第二次开始反弹的高度全部加起来,再加上第一次落地的高度。
/** * HJ38 求小球落地5次后所经历的路程和第5次反弹的高度 * 描述 * 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高? * 最后的误差判断是小数点6位 * 输入描述: * 输入起始高度,int型 * 输出描述: * 分别输出第5次落地时,共经过多少米第5次反弹多高 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()){ int n = in.nextInt(); // 次数5次 int c = 5; ballLanding(n, c); } } private static void ballLanding(int n, int count) { double sum = 0; // 除了第一次落下,是最长路程n, 后面每次后反弹到落地都是两倍路程,并且高度减半 double curr = n; while (count > 0){ // 这里多加了一个n,第一次 sum += 2 * curr ; // 路程减半 curr = curr / 2.0; count--; } // 输出时减去n就得到了路程 System.out.println(sum - n); System.out.println(curr); } }