10.package fs; import java.util.Scanner; public class Fs10 { // 题目:一球从h米高度自由落下,每次落地后反跳回原高度的一半; // 再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高? public static void main(String[] args) { System.out.println("请输入自由落体高度:"); Scanner a=new Scanner(System.in); double a1=a.nextByte(); double a2=a1; System.out.println("请输入反弹次数:"); Scanner n=new Scanner(System.in); int n1=n.nextByte(); for (int i=0;i<n1;i++){ a1 = a1 /2 ; a2+=a1; } System.out.println("总路径"+a2); System.out.println("最后一次高度"+a1); } } 其他解法
再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高?
程序分析:反弹的高度:(1/2)的n次方*h
* 经过的距离:这个可以总结得到:第一次落地经过:h,第二次落地经过:h+(h/2)*2,
* 第三次落地经过:h+(h/2)*2+(h/2/2)*2
* 那么第n次落地经过: h+(h/2)*2+(h/2/2)*2 +...+h/(2的n-1次方)*2
public class Programme10 {
public static void main(String[] args) {
System.out.println("请输入小球下落的高度和落地的次数:");
Scanner scanner=new Scanner(System.in);
float h=scanner.nextFloat();
float n=scanner.nextFlo