0

再帰を使用して、入力された文字列の可能なすべての文字の組み合わせを取得するこのコードがあります。しかし、プログラムの実行時に何が起こっているのかわかりません! 誰かがこのプログラムで何が起こるか説明してもらえますか? 私はまだプログラミングにかなり慣れていないので、説明が複雑すぎないことを感謝します。

public class WordJumble {
  public static void main(String[] args) {
    String letters = "WORD";
    jumbleWords(letters, "");
  }

  //input parameters
  //word - the remaining letters in the word still to jumble
  //jumbLet - the letters already used to create the jumbled word

  public static void jumbleWords(String word, String jumbLet) {
    int pos;
    String remainingLetters;
    String origWord = word;
    String origJumbledLetters = jumbLet;
    if (word.length() == 1) 
      System.out.println(jumbLet + word);
    else {
      for (pos = 0; pos < origWord.length(); pos++) {
        remainingLetters = origWord.substring(0, pos) + origWord.substring(pos + 1, origWord.length());
        //recursive call to jumbleWords()
        jumbleWords(remainingLetters, origJumbledLetters + origWord.charAt(pos));
      }
    }
  }
}

出力は次のとおりです。

WORD
WODR
WROD
WRDO
WDOR
WDRO
OWRD
OWDR
ORWD
ORDW
ODWR
ODRW
RWOD
RWDO
ROWD
RODW
RDWO
RDOW
DWOR
DWRO
DOWR
DORW
DRWO
DROW

ご協力いただきありがとうございます!

4

2 に答える 2

1

この再帰アルゴリズムが行っていること: 最初の文字列 "WORD" を取り込んでいます

次に、一度に 1 文字ずつ移動し、その文字が移動されると、どの部分文字列が作成され、どの文字が移動されていないかを追跡します。単語をごちゃまぜにするために、それを自分自身に戻します。

pos+1 は、文字項目を文字列の次の位置に移動しています

于 2013-11-13T00:15:07.510 に答える