我正在尝试使用递归来创建一个添加和减去两个参数的程序。到目前为止,我的程序正在为正整数工作,但我完全迷失了如何使这个工作为负整数。我将衷心感谢您的帮助。
到目前为止,这是我的代码:
def add(x,y):
"""add takes x and y and adds them together"""
if y == 0:
return x
else:
return add1(add(x, sub1(y)))
def sub(x,y):
"""sub takes x and y and subtracts them"""
if y == 0:
return x
else:
return sub1(sub(x, sub1(y)))
def add1(x):
return x+1
def sub1(x):
return x-1
答案 0 :(得分:2)
我选择
def add(x,y):
if y > 0:
return add(x, y-1) + 1
elif y < 0:
return add(x, y+1) - 1
else:
return x
减法将是相同的想法,但翻转标志
def sub(x,y):
if y > 0:
return sub(x, y-1) - 1
elif y < 0:
return sub(x, y+1) + 1
else:
return x
测试
>>> add(3,5)
8
>>> add(3,0)
3
>>> add(3,-5)
-2
>>> subtract(8,3)
5
>>> subtract(3,8)
-5
>>> subtract(3,0)
3
答案 1 :(得分:0)
在每种情况下,您都会尝试使y更接近0,因为y == 0是递归的基本情况。
在每种情况下,做正确的事情&#34;到x:
<强>加成强>
代码:
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))
<强>减法强>
代码:
def sub(x, y):
if y == 0:
return x
elif y > 0:
return sub(sub1(x), sub1(y))
else:
return sub(add1(x), add1(y))