用C语言编写一球从200米高度落下,每次落地后反弹回上次 高度的三分之二,问第n次落地时共经过了多少 米?(n由键盘输入)函数
时间: 2024-05-04 11:22:29 浏览: 25
可以用递归函数来实现这个问题:
```c
#include <stdio.h>
float totalDistance(int n, float height) {
if (n == 1) {
return height * 2;
} else {
float nextHeight = height * 2 / 3;
return height + nextHeight + totalDistance(n - 1, nextHeight);
}
}
int main() {
int n;
float height = 200.0;
printf("请输入落地次数n:");
scanf("%d", &n);
printf("第%d次落地时共经过了%.2f米\n", n, totalDistance(n, height));
return 0;
}
```
首先定义了一个递归函数`totalDistance`,它接受两个参数:`n`表示落地的次数,`height`表示当前高度。当落地次数为1时,球只下落一次,上升一次,总共经过的距离是当前高度的两倍。当落地次数大于1时,球会先下落一次,上升到当前高度的三分之二,然后递归计算后续落地时的总距离。
在`main`函数中,先读入落地次数n,并将初始高度设为200。然后调用`totalDistance`函数计算总距离,并输出结果。
需要注意的是,球在最后一次落地时不会再反弹,因此总距离应该是当前高度加上最后一次落地时球下落的距离。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)