每日经典算法题(十) 反弹球

每日经典算法题(十) 反弹球

反弹:Rebound

题目

有一颗反弹球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。

求:

  1. 它在第 10 次落地时,共经过多少米?
  2. 第 10 次反弹多高?

拓展题目

有一球从 h 米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第 n 次落地时,共经过多少米?第 n 次反弹多高?

程序分析

此问题还是经典的重复动作循环的问题,只要找到增加路程和高度的变化规律就能解决。

思路

我们可以将路程设为 s,高度设定为 h。

初始高度为 h = 100,初始路程为 s = 0,球在第一次接触地面(即第一次落地)时能反弹的高度为 h/2,路程为 s = 100。此后每次落地 h 都变为原来的 1/2,路程都比原来增加 h/2*2 = h。

所以我们可以确定从第一次落地以后每一次的落地,s 和 h 的变化都是有规律的,可以通过循环来计算。因为有范围限定,所以 for 循环更加合适。

这里循环条件应该设定为 9 次,因为是从第一次落地之后开始到第十次落地只经历 9 次落地,注意这里不要搞错。同时,既然循环是从第一次落地开始的话,s 的初始值也可设定为 100。

这里建议定义 double 类型的数据 (s,h),for 循环结束后输出 s 和 h 即可。

拓展题目,把初始值改为用户输出的 h 即可,反弹次数也为用户输入的 n,n为 for 循环的条件。

代码示例

public class Q10_ReboundBall {
   
    public static void main(String[] args) {
   
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值