python - Python数组中的所有值递归相乘

标签 python recursion

我浏览了论坛,但找不到与递归地乘以数组中的所有元素有关的任何内容。

我创建了以下代码,几乎可以满足我的要求。目标是不使用循环而仅使用递归。

代码如下:

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/

相关文章:

java - 检查 2 个 BST 的值是否相等

python - 使用嵌套列表迭代数据库

SQL - postgres - 图中的最短路径 - 递归

php - PHP中目录结构的深度递归数组

python - 如何从 Linux VM 上的 Django 应用程序连接到 Azure SQL 数据库

python - GCP AI Platform 无法读取存储在 Google Cloud Storage (Python) 中的 .SAV 文件

python - pyqt安装问题

python array to sql in 子句

python - Windows 错误 : [Error 126] The specified module could not be found

recursion - 这个递归算法的大O是什么