刚开始做这个题受到了括号里”数字都为整数“的误导,以为落地距离是5米,弹起后2米(5/2自动取整)。算出来结果不对,变小了。所以,不是自动取整。就是所有的都算进去,这就牵扯到数学上的极限思想了。除了最开始的下落高度只加一次外,以后的弹起下落都是两倍的距离。举个例子,下落高度是x米 ,则有下落后弹起的高度是x/2,再落下去,又走了一个x/2,依此类推,一直下去,也就是总距离为 x+2x(1/2+1/4+1/8+……),而括号中的数列是一个等比数列,其极限求和的结果就是1。所以 总距离就是3x。推理到这里,就发现写程序只需要一行关键代码就可以。
class Balls{
int calcDistance(int A, int B, int C, int D) {
return 3*(A+B+C+D);
}
};