我浏览了论坛,但找不到与递归地乘以数组中的所有元素有关的任何内容。
我创建了以下代码,几乎可以满足我的要求。目标是不使用循环而仅使用递归。
代码如下:
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]
我知道我已经很接近了,但此时我完全不知所措。无循环和纯递归的限制让我感到困惑!
最佳答案
您的multAllAux
函数返回一个列表
。如果将一个列表附加到另一个列表,您将获得现在所获得的这种嵌套列表类型的结构。
如果您改为使用“扩展”功能;它将按预期工作。
>>> a = [1, 2, 3]
>>> a.extend([4, 5])
>>> a
[1, 2, 3, 4, 5]
extend
从第二个列表中获取元素并将它们添加到第一个列表中,而不是添加第二个列表本身,这就是append
可以!
关于python - Python数组中的所有值递归相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52919700/