Java에서 문자열을 재귀적으로 뒤집기
재귀는 중단 조건이 기준을 충족할 때까지 함수 자체를 반복적으로 호출하는 프로세스입니다. 사용자가 자체에서 함수 자체를 호출할 수 있습니다. 다음은 함수를 재귀적으로 만들기 위해 충족해야 하는 몇 가지 조건입니다.
- 함수는 동일한 함수에서 자신을 호출해야 합니다.
- 재귀 루프가 반복적으로 호출되지 않도록 하려면 종료 조건이 필요합니다.
- 재귀는 동작 과정에서 스택 데이터 구조를 사용합니다. 변수와 함수 호출을 저장소에 저장합니다.
다음은 Java에서 Recursion을 사용하여 String을 반전시키는 코드 블록입니다.
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
메소드에서 Scanner 클래스는 new 키워드를 사용하여 인스턴스화됩니다. Scanner 클래스의 생성자는 입력 스트림을 매개 변수로 사용하고 입력 소스에서 스캔한 후 입력 문자열을 생성합니다.
또한 UTF-8 표준 집합인 기본 문자 집합의 바이트 스트림을 변환합니다. 데이터를 기본 문자 집합으로 변환할 수 없는 경우 생성자는 IllegalArgumentException
을 throw합니다.
시스템은 표준 입력 스트림 인스턴스 메소드 및 변수를 나타내는 java.lang
클래스 패키지입니다. In
은 열려 있고 입력 데이터를 제공할 준비가 된 입력 스트림의 인스턴스 변수입니다.
이 스트림은 키보드 입력 또는 사용자가 지정한 다른 입력 소스를 사용합니다.
nextLine()
함수는 끝에 있는 줄 구분자를 제외하고 현재 줄을 반환합니다. 따라서 이것은 str
변수에 사용자 정의 입력 라인을 저장합니다. String은 나중에 정적 재귀 메서드로 전달됩니다.
정적 recursiveReverse()
메서드의 종료 조건은 입력이 null이거나 1보다 작은지 확인한 다음 입력 문자열 자체를 반환하는 것입니다.
조건이 충족되지 않으면 함수 자체를 다시 호출하지만 0번째 문자를 제외한 하위 문자열을 사용합니다. 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