자바 재귀란 무엇입니까?
함수나 메서드가 자신을 호출하는 시나리오를 재귀라고 하며 이러한 함수나 메서드를 재귀 함수 또는 재귀 메서드라고 합니다. 이 접근 방식은 항상 복잡한 문제를 간단하고 작성하기 쉬운 문제로 나누는 데 사용됩니다. 간단한 예는 두 개의 거울을 서로 앞에 배치하는 것입니다. 그러면 거울이 서로를 재귀적으로 반사하기 시작하므로 쉽게 볼 수 있습니다.간접 재귀
위의 예는 간접 재귀 , 즉 함수 1이 함수 2를 호출하고 함수 2가 함수 1을 호출하는 것을 나타냅니다.직접 재귀
메소드가 자신을 계속해서 호출하는 것을 직접 재귀 라고 합니다 .정지상태
이제 메소드가 자신을 계속해서 호출하면 스택 오버플로 오류가 발생하게 될 것이라고 생각하게 될 것입니다 . 예, 맞습니다. 무한 루프처럼 무한 재귀가 발생할 수 있습니다. 이러한 무한 재귀를 멈추기 위해서는 기본 조건이나 종료 조건을 제공해야 하는데, 이를 정지 조건이라고 하며, 이 조건은 항상 recurse 메서드 내부에 제공되는데, 이에 대해서는 아래 예제에서 자세히 살펴 보겠습니다 .재귀 예제
class Recursion {
static int factorial( int n ) {
// base condition or termination condition
if (n != 0)
// here we are calling the recursive method
return n * factorial(n-1);
else
return 1;
}
public static void main(String[] args) {
// initializing the variables
int number = 5, result;
result = factorial(number);
System.out.println(number + " factorial = " + result);
// changing the value from 5 to 10
number = 10;
result = factorial(number); // recursive function call
System.out.println(number + " factorial = " + result);
}
}
예제 출력
5 계승 = 120 10 계승 = 3628800
이 재귀 메서드 예제에는 기본 메서드에서 호출된 계승 함수가 있습니다. 우리는 팩토리얼이 무엇인지 확인하기 위해 값 5를 전달했는데, 즉 120입니다. 이 팩토리얼 함수는 값 4를 전달하여 자신을 다시 호출하고, 이 함수는 다시 호출하고 값 3을 전달하는 식으로 정지 조건이 다음과 같이 될 때까지 계속됩니다. met는 0의 값입니다. 값을 5에서 10으로 변경한 경우에도 마찬가지입니다.
GO TO FULL VERSION