HOWTO · Java

在 Java 中遞迴地反轉字串

本文介紹了 Java 如何遞迴地反轉一個 String。

本頁內容

遞迴是重複呼叫函式本身直到中斷條件滿足標準的過程。它允許使用者從自身呼叫函式本身。以下是使函式遞迴必須滿足的一些條件:

  1. 函式必須從同一個函式呼叫自身。
  2. 需要一個終止條件來阻止遞迴迴圈被重複呼叫。
  3. 遞迴在其動作過程中使用 Stack 資料結構。它在其儲存器中儲存變數和函式呼叫。

下面是在 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 方法中,使用 new 關鍵字例項化 Scanner 類。Scanner 類的建構函式以 Input Stream 為引數,從輸入源掃描後產生輸入字串。

它還轉換預設字符集(即 UTF-8 標準集)中的位元組流。如果無法將資料轉換為預設字符集,建構函式將丟擲 IllegalArgumentException

System 是一個類 java.lang 包,它代表標準輸入流例項方法和變數。In 是開啟並準備提供輸入資料的輸入流的例項變數。

此流使用鍵盤輸入或使用者指定的其他輸入源。

nextLine() 函式返回當前行,不包括末尾的行分隔符。因此,這將在 str 變數中儲存使用者定義的輸入行。String 稍後傳遞給靜態遞迴方法。

靜態 recursiveReverse() 方法中的終止條件是檢查輸入是否為空或小於 1,然後返回輸入字串本身。

如果條件不滿足,它會再次呼叫函式本身,但使用不包括第零個字元的子字串。substring() 函式建立實際字串的子字串,並再次將較小的流傳遞給相同的方法。

因此它被迭代呼叫,最後,開始返回字元作為響應。

輸出:

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