我的程序不工作。
它的意思是
- 你有一个数组和一个代码
- 如果代码为 0,那么您必须将数字相加
- 如果是别的,那么你必须将它们相乘
- 我希望它使用递归,但是当你得到少于 5 个数字时,我不使用更多递归,我只想正常执行
这是我遇到的问题
the_rest = sum_or_product(code, array[1:])
UnboundLocalError: local variable 'sum_or_product' referenced before assignment
这是程序
def sum_or_product(code, array):
if code == 0:
do = 'SUM'
else:
do = 'PRODUCT'
# THIS IS WITH THE RECURSION
if len(array) >= 5:
this_one = array[0]
the_rest = sum_or_product(code, array[1:])
if do == 'SUM':
return this_one + the_rest
if do == 'PRODUCT':
return this_one * the_rest
# THIS IS WITHOUT THE RECURSION
if do == 'SUM':
start = 0
if do == 'PRODUCT':
start = 1
sofar = start
for i in array:
if do == 'SUM':
total = sofar + i
sofar = total
if do == 'PRODUCT':
product = sofar * i
sofar = product
sum_or_product = sofar
return sum_or_product
print(sum_or_product(1, [1,2,3,4,5,6,7,8,9,10]))
它应该将所有数字从 1 乘到 10。但它只是给出了一个错误。