【笔试】10、一球从100米高度自由落下,求相关数据

/**
 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在     第10次落地时,共经过多少米?第10次反弹多高? 
 * 时间:2015年7月28日15:34:18
 * 文件:Lianxi10.java
 * 作者:cutter_point
 */
package bishi.zuixin50.t2015728;

public class Lianxi10 
{
	//这个是一个等比数列
	public static double getAn(double begin, double n)
	{
		//求第n次落地的时候反弹的高度,也就是第11次的高度
		//类似等比数列a:n = a:1 / pow(2, n-1)
		double pow = Math.pow(2.0, n);
		return begin / pow;
	}
	
	//计算进过的距离
	/**
	 * 等比数列求和
	 * @param begin 球开始落下的地方
	 * @param q 我们比值
	 * @param n 几个数
	 * @return
	 */
	public static double getLength(double begin, double q, double n)
	{
		//我们的公式是S:n = (a:1 * ( 1 - q(n次方))) / (1 - q)
		//这里得公式是S:n = 0.5 * S:n-1 + 150==》S:n = -((100)/pow(2, n-2)) + 300
		//这个歌sn是:100(3*n + 1/(2:(n-2)) - 4)
		double length = begin * (3 - Math.pow(q, n - 2));
		return length;
	}
	
	public static void main(String[] args) 
	{
		System.out.println("第10次反弹的高度是:" + getAn(100, 10));
		System.out.println("走过的距离是:" + getLength(100, 0.5, 10));
		
		double h = 100,s = 100;
		
		for(int i = 1; i < 10; ++i)
		{
			s += h;
			h /= 2;
		}
		
		System.out.println("经过路程:" + s);
		System.out.println("反弹高度:" + h / 2);

	}
}

你可能感兴趣的:(笔试)