追回功能,发现对相反符号(Python)的数字对成对

问题描述 投票:0回答:1
在准备考试的准备工作中,我遇到了以下问题:

编写一个递归函数“ minus_plus”,该函数接收包含非零整数的列表。如果列表的长度均匀,则该函数应返回“ true”,并且对于列表中的每个元素,都存在匹配对(例如,如果5在列表中,则为(-5))。在任何其他情况下,该函数都会返回false。

例如:

Minus_plus([ - 5,-7,2,5,-2,7])=true
  • Minus_plus([5,-5,3,5])= false(-3不在列表中)
  • Minus_plus([5,-5,5])= false(列表的长度是奇数)
  • 我们不允许使用额外的列表(在功能中创建其他列表),也不允许我们修改给定列表。
我们被允许使用“帮助”递归功能,并且参数过载(我不确定这是什么意思),也不允许我们使用“ in” operator。

这里是我编写的代码的开始,我无法完成递归:

def minus_plus(lst): if len(lst) <= 1: return False elif len(lst)%2 != 0: #This deals with lst with len(lst)%2==1 return False elif len(lst)==2: #The "optimal" case, possibly the base case for the recursion return lst[0]==(-1)*lst[1]

您可以尝试
def minus_plus(lst):
    if len(lst)%2:
        return False
    if len(lst)==2:
        return sum(lst)==0
    else:
        x = sorted(lst)
        return minus_plus(x[1:-1]) and (x[0]==-x[-1])
python recursion
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.