Als ich das Problem löste, dass ich alle Zeichenkombinationen aus der angegebenen Zeichenfolge erhalten wollte, habe ich nachgeschlagen und festgestellt, dass Chakotays Blog = 612) hatte was ich gesucht habe !!!
public static void permutation(String q, String ans){
// Base Case
if(q.length() <= 1) {
System.out.println(ans + q);
}
// General Case
else {
for (int i = 0; i < q.length(); i++) {
permutation(q.substring(0, i) + q.substring(i + 1),
ans + q.charAt(i));
}
}
}
Ich war beeindruckt von dem sehr prägnanten Code, obwohl ich verschiedene Dinge einschließlich Englisch gesucht habe !!! Aber ich weiß nicht, was los ist. .. .. Daher möchte ich die Rekursion Schritt für Schritt betrachten. Schauen wir uns als Beispiel das Verhalten der Permutation ("abc", "") "in der richtigen Reihenfolge an.
permutation("abc","")
//q.length=3 Also geh zu sonst
//i=Wenn 0(Dies ist weniger als 3)
permutation("bc","a")
//q.length=2 Also geh zu sonst
//i=Wenn 0(Dies ist weniger als 2)
permutation("c","ab")
//q.length=Ich gehe also zu if
System.out.println("abc");
//i=Wenn 1(Dies ist weniger als 2)
permutation("b","ac")
//q.length=Ich gehe also zu if
System.out.println("acb");
//permutation("bc","a") done
//i=Wenn 1(Dies ist weniger als 3)
permutation("ac","b")
//q.length=2 Also geh zu sonst
//i=Wenn 0(Dies ist weniger als 2)
permutation("c","ba")
//q.length=Ich gehe also zu if
System.out.println("bac");
//i=Wenn 1(Dies ist weniger als 2)
permutation("a","bc")
//q.length=Ich gehe also zu if
System.out.println("bca");
//permutation("ac","b") done
//i=Wenn 2(Dies ist weniger als 3)
permutation("ab","c")
//q.length=2 Also geh zu sonst
//i=Wenn 0(Dies ist weniger als 2)
permutation("b","ca")
//q.length=Ich gehe also zu if
System.out.println("cab");
//i=Wenn 1(Dies ist weniger als 2)
permutation("a","cb")
//q.length=Ich gehe also zu if
System.out.println("cba");
//permutation("ab","c") done
//permutation("abc","") done
Es ist so. Ist es schwer zu verstehen? Ich schrieb es auf und verstand es, aber ich bewunderte oft, dass ich mir eine solche Methode nicht alleine ausdenken konnte.
das ist alles. Es war mein erster Beitrag.
Recommended Posts