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.