python中带负整数的递归加减法

2024-04-20 04:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个程序,用递归加和减两个参数。到目前为止,我的程序是为正整数工作,但我完全不知道如何才能使这个工作为负整数。我真的很感激你的帮助。在

以下是我目前为止的代码:

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

Tags: and代码程序add参数returnifdef
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

减法也是一样的想法,但要改变符号

^{pr2}$

测试

>>> add(3,5)
8
>>> add(3,0)
3
>>> add(3,-5)
-2    
>>> subtract(8,3)
5
>>> subtract(3,8)
-5
>>> subtract(3,0)
3

在每种情况下,您都试图使y接近0,因为y==0是递归的基本情况。在

  • 如果y为正,则通过反复减去1来实现。在
  • 如果y为负数,则重复加1。在

在任何情况下,对x做“正确的事情”:

添加

  1. 如果x或y为0,则返回另一个值
  2. 如果y为正,则在x上加1,y减去1:6+2=7+1=8+0=8
  3. 如果y为负数,x减去1,y加1:6+(-2)=5+(-1)=4+0=4

代码:

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))

减法

  1. 如果y为0,则返回x
  2. 如果y为正,则x减去1,y减去1:6-2=5-1=4-0=4
  3. 如果y为负数,则在x上加1,在y上加1:6-(-2)=7-(-1)=8-0=8

代码:

^{pr2}$

相关问题 更多 >