【发布时间】:2013-02-18 22:54:49
【问题描述】:
问题在于编写递归函数“def EhMensuravel (target, weight)” 这决定了是否可以在双盘天平上使用一组给定的砝码来测量所需的目标值。可用的权重存储在“权重”列表中。 请记住,砝码可以放在目标砝码所在的盘子的对面,也可以放在目标砝码的同一盘子上,也可以不使用。
我做的代码是这样的,但是有问题。
weights = [1, 2, 3]
matrix = []
def createaMatrix():
for i in range(len(weights)):
matrix.append([])
for j in range(3):
for i in range(len(weights)):
if j==0:
matrix[j].append(weights[i])
if j==1:
matrix[j].append(-weights[i])
if j==2:
matrix[j].append(0)
createMatrix()
def EhMensuravel(entry, weights, final_weight=0):
if final_weight == entry:
return True
for j in range(3):
for i in range(len(weight)):
final_weight += matrix[i][j]
return EhMensuravel(entry, weight[1:], final_weight)
编辑:例如,当我尝试print EhMensuravel(4, weights) 时,输出为:
>>>
1
2
3
None
>>>
【问题讨论】:
-
“出了点问题。”请编辑您的问题,说明 什么 有问题。
-
请分享你的程序的输出,以及你是如何运行它的。
-
您正在从
EhMensuravel函数中的for循环返回。这意味着它只会使用j = 0和i = 0(除非len(weights)为0,在这种情况下,函数将返回None,因为内部循环不会运行)。 -
但是我该如何解决呢?我认为当我返回 EhMensuravel(entry, weights[1:], final_weight) "weights[1:]" 也是错误的,但我不知道如何解决它