在 Java 中递归地反转字符串
递归是重复调用函数本身直到中断条件满足标准的过程。它允许用户从自身调用函数本身。以下是使函数递归必须满足的一些条件:
- 函数必须从同一个函数调用自身。
- 需要一个终止条件来阻止递归循环被重复调用。
- 递归在其动作过程中使用 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.
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn