我浏览了一下论坛,找不到任何与递归地将数组中的所有元素相乘的方法。
我已经创建了以下代码,几乎可以实现我想要的功能。我们的目标是不使用循环,只使用递归。
代码如下:
def multAll(k,A):
multAllAux(k,A)
return A[:]
def multAllAux(k,A):
B = [0]
if A == []:
return 0
else:
B[0] = (A[0] * k)
B.append(multAllAux(k,A[1:]))
return B
print(multAllAux(10, [5,12,31,7,25] ))
当前输出为:
[50, [120, [310, [70, [250, 0]]]]]
但是,它应该是:
[50,120,310,70,250]
我知道我已经很接近了,但在这一点上我完全不知所措。没有循环和只有递归的限制让我大吃一惊!
发布于 2018-10-22 04:51:03
您的函数还会在列表的末尾返回一个零,这是您不需要的。您可以尝试这样做:
def mult(k, A: list) -> list:
return [k * A[0]] + mult(k, A[1:]) if A else []
https://stackoverflow.com/questions/52919700
复制相似问题