def rsum(L):
if len(L) == 1:
result = L[0]
elif type(L[0]) == type([]):
if len(L[0]) == 0:
result = []
else:
current = [L[0][0]]
rest = L[0][1:]
result = rsum(current) + rsum(rest) + rsum(L[1:])
else:
result = L[0] + rsum(L[1:])
return result
print(rsum([1,2,[3,4],5]))
这是我的尝试。如果列表非常简单,这将起作用:
print(rsum([1,2,[3,4],5])) -> 15
但复杂的是这样的:[[1],[2,[3]],[]]失败
我只是想知道这是否可以通过减1战略来做到这一点?我已经被困了一段时间了。
不允许循环
答案 0 :(得分:5)
def rsum(L):
if type(L) != list:
return L
if L == []:
return 0
return rsum(L[0]) + rsum(L[1:])