擅长:python、mysql、java
<p>在每种情况下,您都试图使y接近0,因为y==0是递归的基本情况。在</p>
<ul>
<li>如果y为正,则通过反复减去1来实现。在</li>
<li>如果y为负数,则重复加1。在</li>
</ul>
<p>在任何情况下,对x做“正确的事情”:</p>
<p><strong>添加</strong></p>
<ol>
<li>如果x或y为0,则返回另一个值</li>
<li>如果y为正,则在x上加1,y减去1:6+2=7+1=8+0=8</li>
<li>如果y为负数,x减去1,y加1:6+(-2)=5+(-1)=4+0=4</li>
</ol>
<p>代码:</p>
<pre><code>def add(x, y):
if y == 0:
return x
elif x == 0:
return y
elif y > 0:
return add(add1(x), sub1(y))
else:
return add(sub1(x), add1(y))
</code></pre>
<p><strong>减法</strong></p>
<ol>
<li>如果y为0,则返回x</li>
<li>如果y为正,则x减去1,y减去1:6-2=5-1=4-0=4</li>
<li>如果y为负数,则在x上加1,在y上加1:6-(-2)=7-(-1)=8-0=8</li>
</ol>
<p>代码:</p>
^{pr2}$