首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >递归地乘以数组中的所有值Python

递归地乘以数组中的所有值Python
EN

Stack Overflow用户
提问于 2018-10-22 04:43:15
回答 1查看 1.2K关注 0票数 2

我浏览了一下论坛,找不到任何与递归地将数组中的所有元素相乘的方法。

我已经创建了以下代码,几乎可以实现我想要的功能。我们的目标是不使用循环,只使用递归。

代码如下:

代码语言:javascript
复制
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] ))

当前输出为:

代码语言:javascript
复制
[50, [120, [310, [70, [250, 0]]]]]

但是,它应该是:

代码语言:javascript
复制
[50,120,310,70,250]

我知道我已经很接近了,但在这一点上我完全不知所措。没有循环和只有递归的限制让我大吃一惊!

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 04:51:03

您的函数还会在列表的末尾返回一个零,这是您不需要的。您可以尝试这样做:

代码语言:javascript
复制
def mult(k, A: list) -> list:
    return [k * A[0]] + mult(k, A[1:]) if A else []
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52919700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档