今天我的 CPSC 教授布置了一个 Python 测验,题目是递归。
全班同学都被困在下面的第二个问题上。甚至没有人能够接近解决方案。
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return _____
示例代码:
print(sub_set([1, 2])) # [[], [1], [2], [1, 2]]
print(sub_set([1, 2, 3])) # [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
您只能修改下划线,例如我下面的示例可能会演示。
我的解决方案远未结束,甚至不应该考虑:
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return result + [A[:1]] + [A] + [A[::2]]
#sub_set([1, 2, 3]) -> [[3], [3], [3], [2], [2, 3], [2], [1], [1, 2, 3], [1, 3]]
有谁知道如何解决这个问题?当我们只有 15 分钟的时间来解决它时,这似乎是一个非常具有挑战性的问题。
仅供参考,他说他会放弃这个问题,因为班上没有人 - 大约 10 名精心挑选的学生组成的高级计算机科学班 - 可以解决这个问题。