本帖最后由 想要那片海 于 2015-5-25 19:57 编辑
- <span style="line-height: 2.2em;">/*编程一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在</span>第10次落地时,共经过多少米?第10次反弹多高?*/
- public class GetHigh {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- System.out.println("10次反弹的总路程:"+getTotal(100,10)+"米");
- System.out.println("第十次反弹:"+getHigh(100,4)+"米");
- }
- public static double getTotal(double h,double time)
- {
- double sum=0;
- if(time==1)
- sum=h;//如果小球只降落1次,那么一共就经过100米
- else//否则使用递归进行计算总经过的路程
- //每次走过的总路程还包括前一次落下的高度和本次反弹上升的高度(上升的是落下的一半)
- sum=h+h/2+getTotal(h/2,time-1);
- return sum;
- }
- public static double getHigh(double h,double time)
- {
- double high=0;
- if(time==1)
- high=h/2;//反弹一次是高度的一半
- else//如果不是反弹一次,则运用递归算法
- high=getHigh(h/2,time-1);
- return high;
- }
- }
复制代码 |
|