 <p>Let's break down this recursive call:</p> <p>With <code>m(3)</code>, <code>p</code> isn't <code>0</code>, so we return <code>3*3 + m(2);</code>.</p> <pre><code>3*3 + (m(2)) </code></pre> <p>With <code>m(2)</code>, <code>p</code> isn't <code>0</code>, so we return <code>3*2 + m(1);</code>.</p> <pre><code>3*3 + (3*2 + m(1)) </code></pre> <p>With <code>m(1)</code>, <code>p</code> isn't <code>0</code>, so we return <code>3*1 + m(0);</code>.</p> <pre><code>3*3 + (3*2 + (3*1 + m(0)) </code></pre> <p>With <code>m(0)</code>, <code>p</code> is <code>0</code>, so we return <code>0</code>. Then the recursive call stack unwinds.</p> <pre><code>3*3 + (3*2 + (3*1 + (0)) = 9 + (6 + (3 + 0)) = 9 + (6 + 3) = 9 + 9 = 18 </code></pre>