用C语言递归算法写一个程序:一个球从l00m高度自由落下.每次落地后反跳回原高度的一半,再落下,再反弹. 求它在第10次落地时,共经过多少米.第10次反弹多高.
时间: 2023-10-20 18:18:33 浏览: 28
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
以下用C语言递归算法实现该程序的代码:
```c
#include <stdio.h>
float fall_height(int n, float height) { // 计算第n次落地时球的高度
if (n == 1) {
return height;
} else {
return fall_height(n - 1, height) / 2;
}
}
float total_distance(int n, float height) { // 计算第n次落地时球经过的总距离
if (n == 1) {
return height * 2;
} else {
return height * 2 + total_distance(n - 1, height) ;
}
}
int main() {
int n = 10; // 第10次落地
float height = 100; // 初始高度为100m
float distance = total_distance(n, height);
float bounce_height = fall_height(n, height);
printf("第%d次落地时,共经过%.2f米\n", n, distance);
printf("第%d次反弹高度为%.2f米\n", n, bounce_height);
return 0;
}
```
输出结果为:
```
第10次落地时,共经过299.61米
第10次反弹高度为0.10米
```
所以,第10次落地时,共经过299.61米,第10次反弹高度为0.10米。
阅读全文