2017-02-28 8 views
1
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

あなたのブラケットはバランスがとれていないで、コードが構文的に間違っている許可されていません。 _actual_コードを貼り付けてください。 – DyZ

+0

これは宿題ですか? –

+0

申し訳ありません。そしてその運動の質問はそうです。 – Ali89

答えて

3
def rsum(L): 
    if type(L) != list: 
     return L 
    if L == []: 
     return 0 
    return rsum(L[0]) + rsum(L[1:]) 
+0

シンプルで良い! –

関連する問題