Python 递归函数,获取倍数列表

Python 递归函数,获取倍数列表,python,Python,问题:编写一个名为get_list_of_multiples(numbers,m)的递归函数,该函数以整数列表和整数作为参数。此函数返回列表中m的倍数列表,其顺序与给定参数相同。如果列表中没有m的倍数,则函数应返回空列表 嘿,伙计们,我的代码有问题: def get_list_of_multiples(numbers, m): if len(numbers) > 1: if(numbers[0] % m == 0): return [num

问题:编写一个名为get_list_of_multiples(numbers,m)的递归函数,该函数以整数列表和整数作为参数。此函数返回列表中m的倍数列表,其顺序与给定参数相同。如果列表中没有m的倍数,则函数应返回空列表

嘿,伙计们,我的代码有问题:

def get_list_of_multiples(numbers, m):

    if len(numbers) > 1:
        if(numbers[0] % m == 0):
            return [numbers[0]] + get_list_of_multiples(numbers[1:], m)
        return get_list_of_multiples(numbers[1:], m)
    if(numbers[0] % m == 0):
        return [numbers[0]]
    else:
        return []
测试用例包括:

print(get_list_of_multiples([2, 3, 5, 6], 2))
print(get_list_of_multiples([9, 5, 15, 11, 23], 3))
print(get_list_of_multiples([], 2))

前两个测试用例很好,但对于最后一个测试用例,如果它是空的,则假设它返回一个空列表,但它不断出现一个错误,表示列表索引超出范围。我应该修改代码中的哪些内容才能使其正常工作?谢谢

尝试将代码更改为:

def get_list_的倍数(数字,m):
如果len(数字)>1:
如果(数字[0]%m==0):
返回[numbers[0]]+获取\u倍数的\u列表(numbers[1:],m)
返回获取多个(数字[1:],m)的列表
elif len(数字)==0:
返回[]
elif(数字[0]%m==0):
返回[数字[0]]
其他:
返回[]
获得
索引器的原因是因为行
数字[0]%m==0
。如果列表的长度为
0
,则仍会检查列表的第0个元素是否可被
m
整除,但如果是空列表,则不存在第0个元素

在更新的代码中,首先检查列表的长度是否为
0
,如果是,则返回空列表,如果不是,则检查第0个元素是否可整除