如何使用递归函数来解决这个问题



编写一个递归函数,将整数列表作为输入,并返回数字的倍数。

numbers_multiples = {}
lst_multiples = []

def multiples(*numbers):
lst_numbers = list(numbers)
lst_numbers.sort()
n = lst_numbers[-1]
for k in lst_numbers:
for i in range(1,n+1):
if k % i == 0:
lst_multiples.append(i)
x = lst_multiples.copy()
numbers_multiples[k] = x
lst_multiples.clear()
return numbers_multiples
msg = multiples(10,20,8,4,6)
print(msg)

这是我不使用递归的解决方案。

这是的一种方法

def recurMultiples(*numbers):
nmbrs = list(numbers)
def find_mults(n, d):
d[n] = [z for z in range(1, n+1) if n%z == 0]
return d
nmbrs = list(numbers)
rslt = {}        
while nmbrs:
rslt = find_mults(nmbrs.pop(), rslt)
return rslt

最新更新