首页IT科技一球从100米高度自由落下 每次落地返回弹回(算法题: 一球从100米高度自由落下,每次落地后反跳回原高度的一半)

一球从100米高度自由落下 每次落地返回弹回(算法题: 一球从100米高度自由落下,每次落地后反跳回原高度的一半)

时间2025-08-19 04:11:09分类IT科技浏览5765
导读:一.序言: 今天在逛C站的时候,突然发现一篇这样的文章《算法题: 一球从100米高度自由落下,每次落地后反跳回原高度的一半》。勾起了我的兴趣(就像小学生看见了加减法的题目,很兴奋,终于可以装13了)。...

一.序言:

今天在逛C站的时候              ,突然发现一篇这样的文章《算法题: 一球从100米高度自由落下                      ,每次落地后反跳回原高度的一半》              。勾起了我的兴趣(就像小学生看见了加减法的题目      ,很兴奋          ,终于可以装13了)                      。

二.题目:

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

三.思路:

1.首先我们来看一下这个球的运动轨迹: 2.解题思路:

我们可以清楚的看到:

a.一次反弹的高度                       ,是原高度的一半:用高度除2循环或者递归所需次数             ,就能得出最终高度      。

b1.经过的路程:球体原来的高度加上反弹的高度   ,就是一次路程                      ,循环所需次数累加                 ,就是总路程          。

b2.经过的路程:除第一次和最后一次的高度都乘2,再加上第一次和最后一次的高度                  ,就是最终路程                       。

b3.经过的路程:所有的高度都程2                     ,再减去第一次的高度和最后一次的高度   ,就是最终路程         。

以上是没有认真审题时              ,没看到路程是第10次落地时                      ,不加上反弹路程时的思路      。

经过的路程      ,我比较倾向于b1方案          ,最符合实际运动轨迹                       。

四.代码:

1.用球体运动轨迹来计算结果:

//算法题: 一球从100米高度自由落下                       ,每次落地后反跳回原高度的一半 //题目:一球从100米高度自由落下         ,每次落地后反跳回原高度的一半;再落下      ,求它在 第10次落地时                       ,共经过多少米?第10次反弹多高? //最终反弹高度 总共运动路程 double height = 100,sum = 0; //球体运动 for (int i = 0; i < 10; i++) { //本次路程 double the = 0; //本次加下落路程 the += height; //累加下落路程 sum += height; //获取本次反弹高度 height /= 2; Console.WriteLine($"第{i + 1}次反跳             ,高度为:{height}"); //第10次落地   ,不用计算反弹高度 if (i < 9) { //本次路程累加反弹高度 the += height; //累加反弹路程 sum += height; } Console.WriteLine($"第{i + 1}次路程:{the}"); Console.WriteLine($"{i + 1}次反弹时                      ,总路程:{sum}"); } Console.WriteLine($"答:第10次落地时                 ,共经过{sum}米,10次反弹{height}米");

2.用2倍中间路程之后                  ,最后加起始高度计算结果:

double height = 100, sum = 0; for (int i = 0; i < 10; i++) { //反弹高度 height /= 2; if (i < 9) { sum += height * 2; } Console.WriteLine($"第{i + 1}次反跳                     ,高度为:{height}"); Console.WriteLine($"第{i + 1}次反跳   ,总路程:{sum}"); } //总路程加上最开始的100米 sum += 100; Console.WriteLine($"答:第10次落地时              ,共经过{sum}米                      ,10次反弹{height}米");

CSDN别的博主些的文章      ,保留了3位小数

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站提高搜索排名(提升网站排名的SEO搜索引擎排名优化策略) was部署是什么意思(如何在swarm集群里通过service部署wordpress)