Я хочу создать все комбинации с двумя состояниями (1 и 0). Если я делаю это с двумя контурами, это работает. Но когда я использую функцию самозапуска, это не делает. Кто-нибудь может сказать мне, почему, пожалуйста?Создать все комбинации Java
Для лупов:
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();
}
}
Self-Вызов функции:
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();
}
}
И с помощью самостоятельного вызова функции вывода является 00,01,010,011 вместо 00,01,10,11
спасибо, но можете ли вы объяснить, почему выход: 00,01,010,011 вместо: 00,01,10,11 – user7185318
Почему бы не использовать оригинальный цикл? Рекурсия должна использоваться только в определенных случаях, и это определенно не является одним из них. Он также медленнее, чем исходный для цикла. Кроме того, используйте лучшие соглашения об именах, так как сейчас очень сложно прочитать ваш код. Проблема находится где-то в abil = shelper.getstring (abil, 0, abil.length() - 1); , но я, как сейчас, его очень трудно отлаживать, и другие пользователи, похоже, согласны с тем, что вы занижены – Gabrielus
Итак, вкратце: разделяйте различные функции на отдельные методы, назовите переменные инициативным способом и не делайте пусть линии будут длиннее 44 символов – Gabrielus