擅长:python、mysql、java
<p>您需要将<code>res+=catalan_rec_count(i,counter+1)*catalan_rec_count(n-i-1,counter+1)</code>行分开,这样它就可以分别对递归结果和计数器进行操作,所以只需将它拆分为几个额外的行,而且在这种情况下,您不会将<code>counter+1</code>传递给递归调用,以便它独立于当前帧跟踪它的调用。。在</p>
<pre><code>def catalan_rec_count(n,counter=1):
if n<=1:
return (1, counter) #remember to return the counter in this case too!
res=0
for i in range(n):
#get the recursive results and counters for both calls
#don't pass counter+1 to it, it should count how many times it is called on it's own
partial1, inner_c1 = catalan_rec_count(i)
partial2, inner_c2 = catalan_rec_count(n-i-1)
#apply the logic with the actual result and add to the counter
res+=partial1*partial2
counter+= inner_c1 + inner_c2
return (res,counter)
</code></pre>