gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:52 25 4
gpt4 key购买 nike

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

假设我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com