一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下
*求它在 第10次落地时,共经过多少米?第10次反弹多高?
基本思路
某一次下落的高度是前一次下落高度的一半;某一次上升高度于后一次下降高度相同;第一次下落高度为100米;用递归
java实现
public class DropBall {
public static void main(String[] args){
double total = 0.0;
for(int i=1;i<=10;i++){
total=down(i)+up(i)+total;
}
total -= up(10);
System.out.println("第10次落地时,共经过了"+total+"米");
System.out.println("第十次反弹"+up(10)+"米");
}
public static double down(int time){
return time==1? 100.0:down(time-1)*0.5;
}
public static double up(int time){
return down(time+1);
}
}
C语言实现
#include <stdio.h>
double down(int time){
return time==1? 100:0.5*down(time-1);
}
double up(int time){
return down(time+1);
}
void main(){
double total = 0.0;
int i;
for(i=1;i<=10;i++){
total=down(i)+up(i)+total;
}
total -= up(10);
printf("第10次落地时,共经过了%f米\n",total);
printf("第十次反弹%f米",up(10));
}