一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹.求它在第N次落地时共经过多少米?
输入
反弹的次数N
输出
小球经过的路程(保留四位小数)
样例输入
2
样例输出
200.0000
import java.util.Scanner;
public class 简单循环题M {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner rd=new Scanner(System.in);
int N=rd.nextInt();
double total=100;
double sum=0;
for(int i=1;i<=N;i++)
{
total+=2*(100/Math.pow(2, N));
}
System.out.println(total);
}
}
应该怎样改
------解决方案--------------------
- Java code
package com.fenghua;import java.util.Scanner;public class FreeFall { // 第N次落地时的路程(默认起点为100m的高空,落点为地平线) public static void main(String[] args) { Scanner rd = new Scanner(System.in); while (true) { System.out.println("请输入第几次落地"); int n = rd.nextInt(); double total = 100; double sum = 0; if (n == 0) break; // 循环的意义在于将总的路程相加 for (int i = 0; i < 2 * n - 1; i++) { sum += total; // 每次落地之后反弹高度为原来的一半 if (i % 2 == 0) { total = total / 2; } } System.out.println(sum); } }}