자바 재귀 예제

 

이제 재귀적인 방법으로 몇 가지 문제를 해결해 보겠습니다. 한 함수를 다른 함수에서 호출하는 아이디어는 함수가 자체적으로 호출할 가능성을 즉시 시사합니다. Java의 함수 호출 메커니즘은 재귀라고 하는 이 가능성을 지원합니다. 직접 재귀와 간접 재귀의 차이점은 무엇입니까? 함수 재미는 동일한 함수 재미를 호출하는 경우 직접 재귀라고합니다. 함수 재미는 다른 함수를 호출하는 경우 간접 재귀라고 fun_new 및 fun_new 호출 재미를 직간접적으로 말합니다. 직접 재귀와 간접 재귀의 차이는 표 1에 나와 있습니다. 따라서 숫자 n을 감안할 때, 우리의 문제는 피보나치 시퀀스의 n-th 요소를 찾는 것입니다. 재귀 솔루션을 구현하려면 중지 조건 및 재귀 호출을 파악해야 합니다. 이 개념을 Java 코드로 변환하려면 재귀 메서드에 두 개의 매개 변수가 필요합니다. 더 명백한 매개 변수는 그 anagrams 표시 하는 단어, 하지만 우리는 또한 우리가 그 anagrams의 각 전에 인쇄 하려는 문자 필요. 재귀의 최상위 수준에서 각 아나그램 앞에 문자를 인쇄하지 않고 동쪽의 모든 아나그램을 인쇄할 수 있습니다. 그러나 다음 수준에서는 하나의 재귀 호출이 ast의 모든 anagrams를 표시하고 문자 e로 각각을 접두어 두는 것입니다.

그리고 그 아래의 다음 수준에서, 하나의 재귀 호출은 문자 eA와 각 접두사, st의 모든 anagrams를 표시하는 것입니다. 그런 다음 문제를 해결하기 위해 재귀 방법을 정의하는 것이 매우 분명합니다. 이 경우, 재귀 호출을 수행하는 것은 무의미하며, 그려질 흰색 사각형은 1픽셀보다 작은 상황이다. 재귀의 기본 조건은 무엇입니까? 재귀 프로그램에서는 기본 케이스에 대한 솔루션이 제공되며 더 큰 문제의 해결은 작은 문제의 관점에서 표현됩니다. 재귀 메서드가 인수를 인쇄한 후 더 큰 인수로 자신을 호출하고 무한히 반복됩니다. 메서드가 11407 번 호출 된 후이 출력을 제공했습니다 : 대답 : 예, 기본 사례는 b = 0입니다. 연속적인 재귀 호출은 b를 1로 줄여 기본 케이스쪽으로 구동합니다. 함수 미스터리(a, b)는 * b. 수학적으로 기울어진 학생이 ID ab = a +a(b-1)를 사용하여 유도를 통해 이 사실을 증명할 수 있습니다. 그러나 재귀 솔루션을 생각하려고하면 이진 트리의 높이에 대한 정의를 루트의 왼쪽 분기의 최대 높이와 루트의 오른쪽 분기와 1을 다시 할 수 있습니다. 재귀는 솔루션이 동일한 문제의 “더 작은” 솔루션을 기반으로 하는 문제를 해결하는 방법입니다.

대부분의 프로그래밍 언어(Java 포함)에서 이 값은 정의에서 자신을 호출하는 함수에 의해 달성됩니다. 재귀 농담으로, “재류를 이해하려면 먼저 재귀에 이해해야합니다”. 이전 장에서 재귀 입력을 검토할 때 몇 가지 재귀 예제를 살펴보았지만 루프를 사용하여 쉽게 해결할 수 있었습니다. 이 장은 결국 재귀가 쉽게 할 수없는 일을 할 수있는 예를 보게 될 것이라고 약속했다. 이제 몇 가지 예제를 살펴보겠습니다. 이 자습서에서는 Java에서 재귀 개념을 소개하고 몇 가지 간단한 예제를 보여 주어 설명했습니다. 컴파일러는 이 점을 사용하여 메모리를 최적화할 수 있지만 Java 컴파일러는 현재로서는 꼬리 재귀에 최적화되지 않습니다. 각 재귀 호출은 JVM의 스택 메모리에 새 프레임을 추가합니다. 따라서 재귀 호출이 얼마나 깊게 잠수할 수 있는지에 주의를 기울이지 않으면 메모리 부족 예외가 발생할 수 있습니다.

하지만 재귀로, 우리는 마법의 가정을 통해 생각하여 그것을 할 수 있습니다.