python - 将递归与循环相结合以找到最大值
问题描述
我正在尝试解决递归练习并变得非常困惑。问题如下:
假设我有一个 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作为输入:profit([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)
推荐阅读
- reactjs - 带有可加载组件的服务器端渲染不起作用
- flutter - 不推荐使用祖先StateOfType,而是使用 findAncestorStateOfType
- spring-boot - Spring LDAP 安全性 - BeanCreationException
- r - 在 Rmarkdown 中编织到 pdf 时,代码离开页面
- sql - 如何使用 TypeORM 创建这个 ViewEntity?
- c - 多次调用函数 - (将函数作为参数传递) - C
- python - 我需要 Python OpenCV 中检测到的对象的日志数据
- linux - 在 perf 中了解内核符号与我的应用程序的关系
- dart - 即使是同一类型,也无法分配 Dart 函数参数
- redux - redux-toolkit 在来自另一个 thunk reducer 的同一切片中使用 actionCreater