Belirli bir dizenin tüm permütasyonlarını bulmak için this basit ve zarif python çözümünü okudum. Bu tekrarlayıcıdır. Buna dayanarak python'da yinelemeli bir çözüm uygulamaya çalıştım.İteratif çözüm: - Dize permütasyonlarını bulma
Kodum aşağıda. Ama sadece 3 karakter dizisi için çalışır: (recursion base case koşul ve özyeyiş koşulu yineleme (non-özyinelemeli) nasıl çevirdiğini anlamaya çalışıyorum. Herhangi bir işaretçi yinelemeli bir çözüm çalışmasına yardımcı olur. (Ya bu algoritma veya herhangi bir algoritması çok basit olduğundan bir yığın kullanarak bir yineleme için her özyinelemeye dönüştürebilir. Ancak bu durumda bile basittir
def permutations_iter(word):
while True:
perms = []
result = []
char = word[0]
new_word = word[1:]
if len(new_word)==2:
perms = [new_word,''.join(reversed(new_word))]
for perm in perms:
#insert the character into every possible location
for i in range(len(perm)+1):
result.append(perm[:i] + char + perm[i:])
return result
if len(new_word)==2:
break;
#example code to call this iterative function
print permutations_iter("LSE")
Çözüm için teşekkürler. – goldenmean
excellent.elegant – user2290820
kusursuz ve düzgün! – deeshank