⑴ 设定两个double变量d、g,分别代表球第10次落地经过的总距离、球第10次反弹的高度,初始时d = h,
g = h / 2.0,也即球第1次落地经过的距离、球第1次反弹的高度,这里h是球的初始高度;
⑵ 通过观察可以发现,从球第2次落地、球第2次反弹开始:
① 球每次落地经过的距离d = 球上次落地经过的距离d + 2 × 球上次反弹的高度g;
② 球每次反弹的高度g = 球上次反弹的高度g ÷ 2;
⑶ 从球第2次落地、球第2次反弹开始,到从球第10次落地、球第10次反弹为止,通过循环,做以下操作:
① d = d + 2 * g;
② g = g / 2;
⑷ 循环结束后,d和g即为所求结果。
三、程序代码
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner input =newScanner(System.in);int h = input.nextInt();// 球的初始高度double d = h;// 第10次落地经过的总距离,初始为第1次落地经过的距离double g = h /2.0;// 第10次反弹的高度,初始为第1次反弹的高度/* 从第2次落地和反弹开始计算,到第10次为止 */for(int i =2; i <=10; i++){
d = d +2* g;// d(i) = d(i-1) + 2 * g(i-1)
g = g /2;// g(i) = g(i-1) / 2}System.out.printf("%g\n%g", d, g);// 分两行输出结果}}