2016-09-10 8 views
0

これは置換問題です。私は以下のコードを理解しようとしましたが、少し混乱しました。8行目の再帰コードの引数が 'string [:i] + string [i + 1:]'で 'string'でないのはなぜですか

8行目の再帰コードの引数が 'string [:i] + string [i + 1:]'で、 'string'ではないのはなぜですか?

私は、再帰的に 'string'引数がRuntimeErrorを返すことを知っています。

なぜですか?

順列リンク:https://www.codewars.com/kata/permutations/python

def permutations(string): 
    result = set([string]) 
    if len(string) == 2: 
     result.add(string[1] + string[0]) 
    elif len(string) > 2: 
     for i, c in enumerate(string): 
      print "1.c = %s and i is %d"%(c,i) 
      for s in permutations(string[:i] + string[i + 1:]): 
       print "2.string[:i] + string[i + 1:] is %s and i is %d"%((string[:i] + string[i + 1:]),i) 
       result.add(c + s) 
       print "3.result is %s"%result 
    return list(result) 
+3

...「i」の位置の文字を削除するように... –

答えて

1

string[a:b]は、文字列の[a b)a含むとbを除く)サブストリングを意味します。したがって、string[:i] + string[i + 1:]は、i番目の文字がない文字列全体を意味します。

+0

これが完成しました!だから明らかな間違い。あなたはそれについてもっと説明できますか?なぜstring [i]を削除するのですか? –

+0

@TonyWangそのアルゴリズムを参照してください。どのように動作するのか分かりません! –

関連する問題