-1

我需要将递归函数的返回值与整数进行比较。递归地对列表的所有元素进行求和,我必须将最终总和与整数“n”进行比较,如果 sum == n 则返回 TRUE,如果 sum != n 则返回 FALSE。如果我给出一个空列表,那么函数必须返回 FALSE 。在这里我报告代码以澄清情况:)

def function(list_of_numbers,int):

   if not list:

     return false # I have to return false if list is empty.

   if len(l) > 0:

     return l[0] + function(list_of_numbers[1:],int) # recursive sum of element

   # and here i'm stuck !
4

1 回答 1

1

not l我们通过一个空列表或达到我们的基本情况时,请n与我们的test数字进行比较,如果您想要一个空列表返回 True 更改test=-1test=0

def function(l, n=0, test=-1):
    if not l:
        return n == test
    else:
        n += l[0]
        return function(l[1:], n, test)


In [2]: function([1,2,3],test=6)
Out[2]: True

In [3]: function([1,2,3],test=5)
Out[3]: False

In [4]: function([1,2,3])
Out[4]: False

In [5]: function([])
Out[5]: False

如果您希望一个空列表返回 False ,您可以检查该函数已被调用多少次,然后比较 n 以进行测试或返回 False :

def function(l, n=0, test=0, calls=0):
    if not l:
        return n == test if calls > 0 else False
    else:
        n += l[0]
        calls += 1
        return function(l[1:], n, test,calls)

如果您只想传递一个参数,则要测试的数字:

def function(l, test, n=0, calls=0):
    if not l and calls == 0: # changed for jython
        return False
    if not l:
        return n == test 
    else:
        n += l[0]
        calls += 1
        return function(l[1:],test,n, calls)
于 2014-12-18T16:10:09.870 回答