この再帰的な方法を反復的な方法に変換しようとしています。しかし、私は途中で立ち往生しています。
static void string_recurse(String active,String rest) {
if (rest.length() == 0) {
System.out.println(active);
} else {
string_recurse(active + rest.charAt(0), rest.substring(1, rest.length()));
string_recurse(active, rest.substring(1, rest.length()));
}
}
この再帰メソッドを反復メソッドに変換する方法がわかりません。このメソッドが行うことは、特定の単語のすべての「サブセット」単語を出力することです。より正式には、文字列がある場合、すべての文字列を列挙s_1s_2...s_n
します。s_{i1}s_{i2}...s_{ik}
i1, i2, ..., ik
{1, ..., n}
i1 < i2 < ... < ik
たとえば、呼び出すstring_recurse("","abc");
と、出力が得られます。
abc
ab
ac
a
bc
b
c
(the empty word)