Javaで再帰を使って文字列を反転させる方法
Javaで再帰を使って文字列を反転させる
再帰は、問題をより小さな類似の部分問題に分解できる場合に強力な技術です。文字列の反転は、シンプルな再帰関数がいかにエレガントに文字列操作を扱えるかを示す古典的な例です。
なぜ再帰を使うのか
- 概念的な明確さ – 関数が問題の定義を自然に反映します。
- 最小限のコード – わずか数行で反転を実現できます。
- 教育的価値 – 基底ケース/再帰ステップのパターン理解に役立ちます。
Java実装
以下のプログラムは文字列を読み取り、再帰的な反転メソッドを適用し、結果を出力します。
package com.guru99;
public class ReverseString {
public static void main(String[] args) {
String myStr = "Guru99";
String reversed = reverseString(myStr);
System.out.println("反転後の文字列: " + reversed);
}
/**
* 与えられた文字列を再帰的に反転させる。
* @param str 反転させる文字列
* @return 反転した文字列
*/
public static String reverseString(String str) {
if (str.isEmpty()) {
return ""; // 基底ケース: 空文字列の反転は空文字列
}
// 最初の文字を除いた部分文字列で再帰し、最初の文字を末尾に結合
return reverseString(str.substring(1)) + str.charAt(0);
}
}
典型的な出力
反転後の文字列: 99uruG
処理の流れの理解
再帰は、最初の文字を繰り返し取り除き、残りの部分文字列の反転結果にその文字を追加することで動作します。部分文字列が空になると再帰が戻り、文字が逆順に連結されます。
エッジケースとパフォーマンス
- 空文字列 – 基底ケースで処理され、即座に空文字列を返します。
- null入力 –
NullPointerExceptionを避けるため、nullチェックを追加できます。 - 時間計算量 – 再帰スタックにより時間・空間ともにO(n)です。
まとめ
再帰的な文字列反転は簡潔で、核心的なアルゴリズム的思考を示します。パフォーマンスがクリティカルな本番コードでは、スタック使用量が少ない反復的アプローチやStringBuilderの使用が推奨されます。
Java
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
- Javaオブジェクト配列の作成:ステップバイステップガイド
- Java String.length()メソッド:文字列サイズ取得の実例解説
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Java String.compareTo()マスター:構文、ユースケース、実践例
- Java String.endsWith()マスター:文字列サフィックスチェック実例付き
- Java文字列置換マスター:replace()、replaceAll()、replaceFirst()徹底解説
- JavaでcharをStringに変換する方法:実践例とベストプラクティス
- Javaでフィボナッチ数列を生成:for文、while文、再帰の実装例
- Java Stringクラス完全ガイド:生成、操作、主要メソッド46選