擅长:python、mysql、java
<p>你在算法的实现中犯了一些错误。如果使用递归方法,则不必使用<code>grid</code>,因为实际上您需要任何存储的数据。你只需要从当前位置返回两个可能的子路径-就这样!因此,您需要对代码的主要思想进行一些更改。在</p>
<p>我尽量保留您的原始代码,但仍能正常工作:</p>
<pre><code>def pathCounterNaive(width, height, startX = 0, startY = 0):
if startX >= width or startY >= height:
return 0
if startX == width-1 and startY == height-1:
return 1
return pathCounter(width,height, startX+1, startY) + pathCounter(width,height, startX, startY+1)
slowK=pathCounterNaive(3,3)
print(slowK)
</code></pre>
<p>请记住,参数<code>width</code>和<code>height</code>表示顶点的数目,因此对于<code>2x2</code>网格,它们不是<code>2</code>,而是<code>3</code>。由于这段代码使用纯递归,所以速度非常慢。如果你想使用你的记忆方法,你必须修改你的代码如下:</p>
^{pr2}$
<p>这里您必须使用<code>2</code>作为<code>2x2</code>网格的参数来调用它。由于缓存了已计算的路径,此代码要快得多。在</p>