如何调试这个递归函数python



我在学校就在研究这个问题,我写了一个我认为正确的函数(我们需要使用没有循环的递归)

def subset_sum(numbers, target):
    '''
    numbers - a list of positive integers
    target - a non-negative integer
    returns True if the list 'numbers' has a sub-list with sum 'target',
            False otherwise.
    '''
    # Your code for question #4 starts here
    if sum(numbers[1:]) == target or target == 0:
        return True
    if sum(numbers[1:]) == (target - numbers[0]):
        return True
    if len(numbers) == 1 and numbers[0] == target:
        return True
    if len(numbers) == 1 and numbers[0] != target:
        return False
    else:
        subset_sum(numbers[1:], target)

对于某些输入,如subset_sum([4,4,4], 12)subset_sum([4,4,4], 8),可以得到正确的输出,但对于subset_sum([4,4,4], 4),我没有得到输出。

有人能看看并告诉我这里出了什么问题吗?当它没有给出任何输出时,就没有错误,只是空白。

您必须在else分支中返回subset_sum的结果:

else:
    return subset_sum(numbers[1:], target)

最新更新