【问题标题】:How should I write a recursive function that returns multiple values? [closed]我应该如何编写一个返回多个值的递归函数? [关闭]
【发布时间】:2021-02-18 12:35:15
【问题描述】:

我希望输出是一个元组,包括产品的总和。 例如列表 [1,2,3,4] 应该输出 (10,24)。我可以单独获得总和和乘积,但不能同时获得两者。到目前为止,这是我所拥有的:

def sum_product(aList):
    if len(aList) == 1:
        return aList[0]
    result = sum_product(aList[1:])
    return (result + aList[0], result*aList[0])

sum_product([1,2,3,4])

非常感谢您的帮助

【问题讨论】:

  • 为什么要在这里使用递归?这是一个明确要求递归函数的家庭作业问题吗?在任何其他情况下,您都可以通过迭代更轻松地实现这一目标
  • 仔细考虑在基本情况下应该返回什么。特别是,您仍然需要分别返回一个总和一个产品,对吗?然后仔细想想递归:当你进行递归调用时,你会得到什么样的值?为了获得用于本地总和计算的“小计”,您应该如何处理该结果?而对于产品计算?
  • @mightyandweakcoder 不,这不能解决 OP 代码的问题。
  • 我投票决定重新提出这个问题,因为意图很明确,并且 OP 展示了对发布代码的明确尝试。结束原因“不可重现或由拼写错误引起” 根本不合适。这是一个新用户,在他们的问题上关上门是有害的。请重新打开。

标签: python recursion tuples


【解决方案1】:

你的错误是你返回不同的类型。在递归结束时返回 int,但通常返回一个元组。我更改了您的代码,所以现在可以使用了。

def sum_product(aList):
    if len(aList) == 1:
        return aList[0], aList[0] #list[0] for sum and list[0] for product
    result = sum_product(aList[1:])
    return (result[0] + aList[0], result[1] * aList[0])

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 2022-11-19
    • 2018-05-23
    • 1970-01-01
    • 2019-11-04
    • 2012-10-16
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多