Ich möchte alle Kombinationen mit zwei Zuständen (1 und 0) erstellen. Wenn ich dies mit zwei for-Schleifen mache, funktioniert das. Aber wenn ich eine selbstanrufende Funktion verwende, tut es das nicht. Kann mir bitte jemand sagen warum?Alle Kombinationen erstellen Java
For-Schleifen:
public class Counter {
public Counter() {
loop(iter);
for (int i=0; i < 2; i++) {
for (int i2=0; i2 < 2; i2++) {
System.out.println(Integer.toString(i)+Integer.toString(i2));
}
}
}
public static void main(String args[]){
new Counter();
}
}
Selbst Aufruf Funktion:
class Stringhelper {
public Stringhelper() {
}
public String getstring(String string,int beginning,int ending) {
if (string.length() != 0) {
String newstring="";
for (int iter=Math.abs(beginning); iter < ending && iter < string.length(); iter=iter+1) {
newstring=newstring+Character.toString(string.charAt(iter));
}
return newstring;
}
else {
return "";
}
}
}
public class Counter {
public String abil="";
public int iter=1;
public Stringhelper shelper=new Stringhelper();
public void loop(int iter) {
for (int i=0; i < 2; i++) {
abil=abil+Integer.toString(i);
if (iter==0) {
System.out.println(abil);
abil=shelper.getstring(abil,0,abil.length()-1);
}
else {
loop(iter-1);
}
}
}
public Counter() {
loop(iter);
}
public static void main(String args[]){
new Counter();
}
}
Und mit dem Selbst Aufruf Funktion ist der Ausgang 00,01,010,011 statt 00,01,10,11
Dank, aber können Sie bitte erklären, warum die Ausgabe lautet: 00,01,010,011 statt: 00,01,10,11 – user7185318
Warum nicht das Original verwenden for-Schleife? Rekursion sollte nur in bestimmten Fällen verwendet werden, und dies ist definitiv keiner von ihnen. Es ist auch langsamer als die ursprüngliche for-Schleife. Verwenden Sie auch bessere Namenskonventionen, da es momentan sehr schwierig ist, Ihren Code zu lesen. Das Problem ist irgendwo in abil = shelper.getstring (abil, 0, abil.length() - 1); aber ich von gerade jetzt, seine extrem schwierig zu debuggen und andere Benutzer scheinen zuzustimmen, wie Sie downvoted werden – Gabrielus
Also zusammenfassend: separate Funktionen in separate Methoden, benennen Sie die Variablen in einer Initiative, und nicht Lassen Sie Zeilen länger als 44 Zeichen werden – Gabrielus