在 Java 中递归地反转字符串

递归是重复调用函数本身直到中断条件满足标准的过程。它允许用户从自身调用函数本身。以下是使函数递归必须满足的一些条件:

  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.