【发布时间】:2017-11-21 18:55:43
【问题描述】:
我有一个函数,它接受两个值作为输入,并通过第二个函数返回一个作为两者“组合”的值(为简单起见,f2 返回输入值的总和)。在python中是:
f1 (in1, in2):
return f2(in1,in2)
f2 (in1, in2):
return in1 + in2
现在,in1 和 in2 与一个时间点相关联; in1 可以取 3 个值:0、1 和 2。
我想要做的是“向前看”n=4 时间点并确定in1 值的最佳序列,这将为我提供最高的回报值。
所以,假设 in2 最初是 10。我需要做的是评估:
a = f1(0, 10)
b = f1(1, 10)
c = f1(2, 10)
然后,对于我获得的每个结果,我需要用 in1 的可能值对其进行评估:
a0 = f1(0, a); a1 = f1(1, a); a2 = f1(2, a)
b0 = f1(0, b); b1 = f1(1, b); b2 = f1(2, b)
c0 = f1(0, c); c1 = f1(1, c); c2 = f1(2, c)
所以我在 n 次迭代后停止并确定最佳输入序列(在本例中它将是 2 2 2 2,因为 10+12+14+16 是最高值)。
在这种情况下可以使用递归(可能是深度优先搜索)吗?编码它的最佳方法是什么?蛮力的方法是嵌套 4 个 for 循环,但如果 n = 10 怎么办?
【问题讨论】:
标签: python recursion combinations depth-first-search