一道有趣的面试题,小鸟和火车的问题
(此题不难,但是出题者要的不是答案而是推导过程,以此考验面试者的逻辑思维能力,题目部分是转载的,详细推导是我自己写的)
这道“有趣”的面试题是:甲乙两地相距100公里,有一辆火车A以每小时15公里的速度离开甲地直奔乙地,另一辆火车B以每小时20公里的速度从乙地开往甲地。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从甲地出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟往返了多少次?
首先说这个题,我觉得出的并无任何不严谨的地方,也没有能明显让人误解的地方。按照通常的表述,显然题意是忽略鸟的转身时间,忽略鸟的身长,把鸟和火车头抽象成三个点。
然后是解法,按照原意,鸟往返了无限多次(趟数),可以用数学归纳法证明:
假设小鸟跑完 K 次时两车相距 m,小鸟在A火车处(R 处);
然后小鸟再朝B火车跑,即第 k+1 次,并且与B火车相遇(Y 处),此时AB火车相距多少(XY)?
通过这种假设可以分析出小鸟每次往返,两车新间距(衰减),进而可以反推出往返多少次(衰减到0)
=================================================
现在我们看示意图:
第k+1次小鸟与B火车相遇在 Y,两者花费的时间(t)相同,并且距离相加正好为 m,于是:
m = 30t + 20t
t = m / 50
此时AB火车间距XY应该是 m 减去 A 火车跑的距离,再减去 B 火车跑的距离,于是:
m - 15 * (m/50) - 20 * (m/50) = 3m/10
规律如下:
第 k 次时,两车相距 m;
第 k + 1 次时,两车相距 3m / 10;
第 k + 2 次时,两车相距 3(3m / 10) / 10;
第 k + 3 次时,两车相距 3(3(3m / 10) / 10) / 10;
……
第 k + n 次时,两车相距 (3 / 10)^n * m
如果 k = 0 时,m = 100,那小鸟跑的次数为 n 次时,两车相距:(3 / 10)^n * 100
这么看来,就算跑无数次,两车的间距也不可能为 0
我们还可以推导出此类问题的一个公式,设火车 A 的速度 a,火车 B 的速度 b,小鸟的速度 c,c > a 且 c > b,甲乙两地相距 m
((1 - a / (b + c) - b / (b + c))^n) * m
把此题的常数带进去,((3/10)^n) * 100,就算 n 为无限大,两车的距离都不会为0,也就是说两车间距无限接近0时,小鸟的飞行次数将无限增大。