HOWTO · Java

Java で文字列を再帰的に反転する

この記事では、文字列を再帰的に Java に戻す方法を紹介します。

このページの内容

再帰とは、破壊条件が基準を満たすまで、関数自体を繰り返し呼び出すプロセスです。これにより、ユーザーは関数自体を自分自身から呼び出すことができます。関数を再帰的にするために満たさなければならないいくつかの条件を次に示します。

  1. 関数は、同じ関数から自分自身を呼び出す必要があります。
  2. 再帰ループが繰り返し呼び出されないようにするには、終了条件が必要です。
  3. 再帰は、アクションの過程でスタックデータ構造を使用します。変数と関数呼び出しをストレージに格納します。

以下は、Java で再帰を使用して文字列を逆にするためのコードブロックです。

import java.util.Scanner;

public class StringReverseUsingRecursion {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter any String :");
    String str = scanner.nextLine();
    System.out.println("The reverse of the String is : " + recursiveReverse(str));
  }

  static String recursiveReverse(String input) {
    if ((input == null) || (input.length() <= 1))
      return input;
    else {
      return recursiveReverse(input.substring(1)) + input.charAt(0);
    }
  }
}

上記のコードブロックでは、クラスは静的メソッドと main メソッドを保持しています。recursiveReverse() メソッドは、再帰を使用して文字列を反転する静的再帰関数です。入力パラメータを受け取り、文字列値も返します。

main メソッドでは、Scanner クラスは new キーワードを使用してインスタンス化されます。Scanner クラスのコンストラクターは、パラメーターとして入力ストリームを受け取り、入力ソースからスキャンした後に入力文字列を生成します。

また、UTF-8 標準セットであるデフォルトの文字セットでバイトストリームを変換します。データをデフォルトの文字セットに変換できない場合、コンストラクターは IllegalArgumentException をスローします。

システムはクラス java.lang パッケージであり、標準の入力ストリームインスタンスのメソッドと変数を表します。In は、開いていて入力データを提供する準備ができている入力ストリームのインスタンス変数です。

このストリームは、キーボード入力またはユーザーが指定した別の入力ソースを使用します。

nextLine() 関数は、最後の行区切り記号を除いて、現在の行を返します。したがって、これはユーザー定義の入力行を str 変数に格納します。文字列は後で静的再帰メソッドに渡されます。

静的 recursiveReverse() メソッドの終了条件は、入力が null または 1 未満であることを確認してから、入力文字列自体を返すことです。

条件が満たされない場合は、関数自体を再度呼び出しますが、ゼロ番目の文字を除く部分文字列を使用します。substring() 関数は、実際の文字列のサブ文字列を作成し、その小さいストリームを同じメソッドに再度渡します。

したがって、それは繰り返し呼び出され、最終的に、応答として文字を返し始めます。

出力:

Enter any String :
Hello
The reverse of the String is : olleH.