首先定义一个”深度“的概念,
[]----深度为1
[[]]----深度为2
[[[]]]----深度为3
…
于是[x,y]的product_sum = x+y
[x,[y,z]]的product_sum = x+[y+z]*2
[x,[y,[z]]]的product_sum = x+2(y+3z)
使用递归写一个函数,输入为包含这种深度规则的数组,返回一个product_sum。
样例输入:
[5, 2, [7, -1], 3, [6, [-13, 8], 4]]
样例输出:
12
Solution
使用一个变量multiplier记录当前的深度,对于list中元素类型为list的对象,使用递归,
input_array = [5, 2, [7, -1], 3, [6, [-13, 8], 4]]
def productSum(array,multiplier=1):
print(f"counter:{counter}")
sum = 0
for element in array:
if type(element) == list:
sum += productSum(element,multiplier + 1)
else:
sum += element
print(f"current element:{array}\tRETURN sum = {sum}")
return sum * multiplier
print(productSum(array = input_array, multiplier=1))
输出:
current element:[7, -1] RETURN sum = 6
current element:[-13, 8] RETURN sum = -5
current element:[6, [-13, 8], 4] RETURN sum = -5
current element:[5, 2, [7, -1], 3, [6, [-13, 8], 4]] RETURN sum = 12
12
[Finished in 0.6s]