python - 将递归与循环相结合以找到最大值

标签 python python-3.x loops recursion

我正在尝试解决递归练习,但真的很困惑。 问题如下:

假设我有一个 n 平方米的公寓, i = [1,2,3..., n] 为平方米单位,[p1, p2, p3, ..., pn] 为对应的每平方米价格(如 p1 为1平方米,pn为n平方米的价格)。

我想找到分配我的公寓的最佳方式,这将给我“最大收入”。

示例 - 如果我有 4 平方米的公寓,尺寸 1、2、3、4 的价目表相应地为 [1、5、8、9],那么这些是选项集:

  • 将公寓保留为一个 4 平方米的单元(值:9)
  • 将 4 平方米分成 1、1、1、1 平方米(总值:4)
  • 将 4 平方米分成 1、1、2 平方米(总值:7)
  • 将 4 平方米分成 2.2 平方米(总值:10)
  • 将 4 平方米分成 1.3 平方米(总值:9)

因此我的函数“profit”应该为输入返回数字 10: 利润([1,5,8,9], 4)

有人要求我使用以下模式解决此问题,其中递归调用必须仅在循环内:

def profit(value, size):
    ...
    for i in range(size):
        ...
    return ...

在很长一段时间后,我设法在没有循环条件的情况下解决了这个问题,但它真的让我感到沮丧,递归函数是多么的困难和不直观。 我真的很感激这类问题的一般指导提示,或者即使你可以推荐我引用其他可能帮助我更好地学习这个主题的资源。有时我很难跟上。

当然,非常感谢您对此特定功能的帮助...

最佳答案

使用以下函数解决了它:

def profit(value,size):
    if size <= 0:
        return 0
    lst1 = []
    for i in range(size):
        lst1.append(profit(value, size-(i+1))+value[i])
    return max(lst1)

关于python - 将递归与循环相结合以找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270368/

相关文章:

android - 在android中找不到TF模型输入节点

python - 如何在 Visual Studio Code 中运行调试 Django 应用程序?

java - 如何在Java中的循环中省略空值

javascript - 使用循环 onclick 更改背景颜色

python - 特别是本地 Django 部署。织物?

python - 使用pywinauto连接远程桌面

python - 在插槽中使用 weakref 继承类

python - 有没有更有效的实现方式?

python - 在python中按列表的顺序重复选择n项

c++ - 不循环检测连接请求