擅长:python、mysql、java
<p>每行<code>n</code>有<code>n**2</code>罐,每罐容积<code>0.407150407905</code>升。但是,当前函数将<code>volume</code>乘法器应用于以下两个方面:</p>
<ul>
<li>当前水平的罐数;以及</li>
<li>上一层罐的<strong>体积<strong>(<em>不是</em>数量)。你知道吗</li>
</ul>
<p>这意味着乘法器被反复应用到一些罐子上,有效地减少了它们在每一层上的体积。在这里我建议两种选择之一:</p>
<ol>
<li>将其分为两个函数,其中一个函数给出罐头数量,另一个函数给出总体积;或者</li>
<li>移动倍增器,使其仅与当前级别的罐头相乘。你知道吗</li>
</ol>
<p>因此:</p>
<pre><code>def cans(layers):
if layers < 1:
return 0
return (layers ** 2) + cans(layers-1)
def lager(layers=5, volume=0.407150407905):
return cans(layers) * volume
</code></pre>
<p>或:</p>
<pre><code>def lager(layers=5, volume=0.407150407905):
if layers < 1:
return 0
return (volume * (layers ** 2)) + lager(layers-1)
</code></pre>