擅长:python、mysql、java
<p>您不需要另一个函数来计算函数调用。MisterMiyagi的想法是在函数本身内部有一个计数器,并在每次函数调用时返回持久性和数字根,最后解包结果</p>
<p>我认为更简单的方法是将计数器作为全局变量,并在每次调用时增加其在函数中的值:</p>
<pre><code>def mdr(n):
if n<10:
return n
else:
return mdr(prodDigits(n))
globals()['persistence'] += 1
persistence = 0
print(mdr(86), persistence) # 6 3
</code></pre>
<p>这种方法看起来更简单,但有一点需要记住:每次调用函数之前都必须初始化计数器:</p>
<pre><code>print(msr(341), persistence) # 2 5 Wrong result
persistence = 0
print(msr(341), persistence) # 2 2 Right result
</code></pre>
<p>这不是一个纯函数,因为它依赖并改变非局部变量</p>