Python 我的代码是有效的,但是如何使代码在确定的时间内运行呢?

Python 我的代码是有效的,但是如何使代码在确定的时间内运行呢?,python,algorithm,performance,Python,Algorithm,Performance,问题: 给定3个输入:弹跳、落球高度和球视图高度。 我如何计算观察者看到传球的次数。 因此,我的代码给出了正确的输出,但当反弹接近1时需要更长的时间,我如何使其在本质上具有确定性 def bouncingBall(h, bounce, window): BounceFactor = bounce BallDropHeight = h ViewerHeight = window BounceLeft = h BallSeenTimes = 1 if

问题: 给定3个输入:弹跳、落球高度和球视图高度。

我如何计算观察者看到传球的次数。 因此,我的代码给出了正确的输出,但当反弹接近1时需要更长的时间,我如何使其在本质上具有确定性

def bouncingBall(h, bounce, window):
    BounceFactor = bounce
    BallDropHeight = h
    ViewerHeight = window
    BounceLeft = h
    BallSeenTimes = 1
    if bounce > 1 or bounce < 0 or window >= h or h ==0:

        return -1
    else:
        while (BounceLeft > ViewerHeight):
            BounceLeft = BounceLeft * BounceFactor
            if (BounceLeft > ViewerHeight):
                BallSeenTimes = BallSeenTimes + 2
            else:
                break
        return BallSeenTimes     
def bouncingBall(h,反弹,窗口):
反弹因子=反弹
球落高度=h
ViewerHeight=窗口
反弹英尺=h
BallSeenTimes=1
如果反弹>1或反弹<0或窗口>=h或h==0:
返回-1
其他:
同时(BounceLeft>ViewerHeight):
BounceLeft=BounceLeft*BounceFactor
如果(BounceLeft>ViewerHeight):
BallSeenTimes=BallSeenTimes+2
其他:
打破
回球次数
我不是在寻找代码答案,而是我需要思考的方向。
目前,我认为如果我能以某种方式建立一个线性关系,并创建一个函数来“猜测”传递,速度会更快。

不确定这是否正确。但是,

var heightDiff=(BallDropHeight-ViewerHeight);
var还原高度=BallDropHeight*(1-BounceFactor);
var BallSeenTimes=((高度差/缩短长度)*2)+1;

也许能解决这个问题。你只需要找到每次弹跳时降低的高度。然后,将观察者和落球点之间的高度差除以降低的高度,即可得出球在观察者上方反弹的次数。在这之后,每个反弹查看器将看到它两次。增加一个是第一次下降


它不涉及任何循环。因此,执行所需的时间很短。希望它能有所帮助

将问题转化为一个方程,求解变量,然后插入其他输入。下一个H=初始H x BounceFactor,这给了我高度的变化率,但我如何计算所有这些“下一个H”,而不实际这样做。有什么提示吗?那一定有点像NextH₂ = (初始H x BounceFactor x BounceFactor)。它甚至适用于BounceFactors>1!(但不小于0。)大于1的反弹系数会有问题,因为它永远不会停止。解决方案将变得无限。这是一个不太可能的案例。交叉张贴在。我建议删除这篇文章。