擅长:python、mysql、java
<p>我只是试着注意到一些事情。。。这不必被认为是<em>答案。在</p>
<p>在我最近的机器上,用<code>n = 100 000 000</code>计算要花30秒。我想对于您刚刚编写的算法来说,这是很正常的,因为它一次又一次地计算相同的值(您没有像其他答案中建议的那样使用缓存优化递归调用)。在</p>
<p>此外,问题的定义相当温和,因为它坚持认为:<em>每一枚拜特兰金币上都有一个整数,<strong>但这些数字都被四舍五入。了解了这一点,您应该将函数的前三行转换为:</p>
<pre><code>import math
def coinProfit(n):
a = math.floor(n/2)
b = math.floor(n/3)
c = math.floor(n/4)
</code></pre>
<p>这将防止<code>a, b, c</code>变成<code>float</code>数字(至少是Python3),这会让你的计算机陷入一个巨大的递归混乱,即使最小的值是<code>n</code>。在</p>