我的python代码中有一个方法,它使用递归。本质上,我需要一个变量,它不会在每次递归时被删除。我需要一个方法外部的类变量,方法可以在其中使用和修改。这是我目前的代码:
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
# check if the partial sum is equals to target
if s %3 == 0 and s!=0:
print "sum(%s)=%s" % (partial, target)
return # if we reach the number why bother to continue
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i+1:]
subset_sum(remaining, target, partial + [n])
if __name__ == "__main__":
max = 0;
subset_sum([10,9,8,7,6,5,8,9,7],10000000)
print max
#Outputs:
#sum([3, 8, 4])=15
#sum([3, 5, 7])=15
#sum([8, 7])=15
#sum([5, 10])=15
你知道吗 我试着这样做来创建类变量:
max = 0;
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
# check if the partial sum is equals to target
if s %3 == 0 and s!=0:
print "sum(%s)=%s" % (partial, target)
if max<s:
max = s
print max
print s
return # if we reach the number why bother to continue
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i+1:]
subset_sum(remaining, target, partial + [n])
if __name__ == "__main__":
max = 0;
subset_sum([10,9,8,7,6,5,8,9,7],10000000)
print max
#Outputs:
#sum([3, 8, 4])=15
#sum([3, 5, 7])=15
#sum([8, 7])=15
#sum([5, 10])=15
我说了max=s,但是我得到了很多错误:
sum([10, 9, 8])=10000000
Traceback (most recent call last):
File "C:/Users/BOB/PycharmProjects/test/test.py", line 24, in <module>
subset_sum([10,9,8,7,6,5,8,9,7],10000000)
File "C:/Users/BOB/PycharmProjects/test/test.py", line 18, in subset_sum
subset_sum(remaining, target, partial + [n])
File "C:/Users/BOB/PycharmProjects/test/test.py", line 18, in subset_sum
subset_sum(remaining, target, partial + [n])
File "C:/Users/BOB/PycharmProjects/test/test.py", line 18, in subset_sum
subset_sum(remaining, target, partial + [n])
File "C:/Users/BOB/PycharmProjects/test/test.py", line 9, in subset_sum
if max<s:
UnboundLocalError: local variable 'max' referenced before assignment
我做错什么了?你知道吗
-更新
global max
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
# check if the partial sum is equals to target
if s %3 == 0 and s!=0:
print "sum(%s)=%s" % (partial, target)
if max<s:
max = s
print "hi"
print max
return # if we reach the number why bother to continue
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i+1:]
subset_sum(remaining, target, partial + [n])
if __name__ == "__main__":
max = 0;
subset_sum([10,9,8,7,6,5,8,9,7],10000000)
print max
#Outputs:
#sum([3, 8, 4])=15
#sum([3, 5, 7])=15
#sum([8, 7])=15
#sum([5, 10])=15
错误与上一个相同:
File "C:/Users/BOB/PycharmProjects/test/test.py", line 9, in subset_sum
if max<s:
UnboundLocalError: local variable 'max' referenced before assignment
目前没有回答
相关问题 更多 >
编程相关推荐