擅长:python、mysql、java
<p>您的问题在于此函数:</p>
<pre><code>def maxsubarray(A,start,end):
if start == end:
return (start,end,A[start])
else:
mid = (start+end)/2
lss = maxsubarray(A, start, mid)
rss = maxsubarray(A, mid+1, end)
css = crosssubarray(A, start, mid, end)
maxsub = maxtuple(lss,rss)
maxall = maxtuple(maxsub, css)
return maxall
</code></pre>
<p>准确地说,前5行。在Python2.x中“工作”(不知道预期结果)的原因是<code>/</code>用于楼层划分,而在Python3.x中<code>/</code>用于浮点除法。由于浮点舍入误差,<code>start</code>很可能永远不会等于<code>end</code>。在</p>
<hr/>
<p>如果整数楼层除法是您要的,您可以将<code>/</code>替换为<code>//</code>。在</p>
<p>这样,错误将消失并返回<code>(8, 10, 32)</code></p>