【发布时间】:2019-07-20 00:53:27
【问题描述】:
为什么这个解决方案有效? 大多数人都在做循环来解决这个问题,我做了递归, 但这很容易,对于计算机,我很困惑为什么会这样?
说明: 一个孩子在高楼的n层玩球。该楼层的高度 h 是已知的。
他把球扔出窗外。球弹跳(例如)到其高度的三分之二(弹跳 0.66)。
他的母亲从距离地面 1.5 米的窗户向外看。
妈妈会看到多少次球从她的窗前经过(包括它下落和弹跳的时候?
一个有效的实验必须满足三个条件: 以米为单位的浮点参数“h”必须大于 0 浮点参数“bounce”必须大于 0 且小于 1 浮点参数“window”必须小于 h。 如果以上三个条件都满足,则返回一个正整数,否则返回-1。
注意: 只有反弹球的高度严格大于窗口参数才能看到球。
export class G964 {
public static bouncingBall(h: number, bounce: number, window: number): any {
if (h <= 0 || bounce >= 1 || bounce <= 0 || window >= h) {
return -1
}
return 1 + 2 * (Math.ceil(Math.log(window / h) / Math.log(bounce)) - 1)
}
}
【问题讨论】:
-
尽管它来自代码,但这看起来更像是一道数学题。你能解释一下这个网站的主题是实际计算机编程中的一个问题吗?
-
在代码大战上,它们只是给出你需要编码和解决的问题,这是我一直在努力解决的问题,只是想学习,所以如果我冒犯了任何人
-
你的问题还不错,只是你问错了网站。这个特定的站点是关于实用的计算机编程的。像这样的问题更适合Mathematics Stack Exchange 网站。我看到您已经是多个 Stack Exchange 站点的成员——只需加入数学站点并在那里提问即可。数学和计算机编程问题之间的分界线有时很模糊,但就目前而言,这更像是一个与编程稍微相关的数学问题。
标签: javascript algorithm typescript math logarithm