2つの状態(1と0)のすべての組み合わせを作成したいと思います。 2つのfor-loopsでこれを行うと、これは動作します。しかし、私が自己呼び出し関数を使用するとき、それはdoesntです。なぜ誰に教えてもらえますか? forループすべての組み合わせを作成する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();
}
}
自己呼び出し機能:
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
ループのためのオリジナルを使用しないのはなぜ?再帰は特定のインスタンスでのみ使用する必要がありますが、これは最も重要なことです。また、元のforループよりも遅いです。また、より良い命名規則を使用するように、今はあなたのコードを読むことは非常に困難です。 問題はどこかにあります。 abil = shelper.getstring(abil、0、abil.length() - 1); 私は今のところ、デバッグするのが非常に難しく、他のユーザーはあなたが下降しているので同意しているようです – Gabrielus
要約すると、別々のメソッドに別々の機能を分け、イニシアティブの方法で変数に名前を付け、行が44文字より長くなるようにしてください – Gabrielus