擅长:python、mysql、java
<p>不需要太多修改代码</p>
<p>在函数<code>merge</code>中,<code>listNumbersT=b</code>行重新分配变量<code>listNumbersT</code>,因此丢失了那里的值,破坏了递归。你知道吗</p>
<p>要解决这个问题,请用下面的循环替换函数<code>merge</code>中的<code>listNumbersT=b</code>。你知道吗</p>
<pre><code>for i,number in enumerate(b):
listNumbersT[ini + i] = number
</code></pre>
<p>要获得正确的返回值,您需要在mergeSort函数的末尾有一个返回值,例如</p>
<pre><code>def mergeSort(listNumbers,ini,end):
if ini==end:
return listNumbers
else:
mid=(ini+end)/2
mergeSort(listNumbers,ini,mid)
mergeSort(listNumbers,mid+1,end)
merge(listNumbers,ini,mid,end)
return listNumbers
</code></pre>
<p>但是,<code>l</code>将被重新排序,因此您实际上不需要在<code>mergeSort</code>末尾返回。你知道吗</p>
<p>干杯</p>