HOWTO · Java
在 Java 中遞迴地反轉字串
本文介紹了 Java 如何遞迴地反轉一個 String。
本頁內容
遞迴是重複呼叫函式本身直到中斷條件滿足標準的過程。它允許使用者從自身呼叫函式本身。以下是使函式遞迴必須滿足的一些條件:
- 函式必須從同一個函式呼叫自身。
- 需要一個終止條件來阻止遞迴迴圈被重複呼叫。
- 遞迴在其動作過程中使用 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.