자바 재귀 함수 예제

이전 연습의 함수가 0에서 100 사이의 모든 정수 a와 b 쌍에 대해 종료합니까? 정수 a와 b가 0에서 100 사이인 경우 미스터리(a, b)가 반환되는 것에 대해 높은 수준의 설명을 제공합니다. 꼬리 재귀는 이와 같은 반대입니다. 계산을 한 다음 결과가 계산될 때까지 결과를 다른 호출로 전달합니다. 일반 반복을 사용하지 않는 함수형 프로그래밍 언어에서 꼬리 재귀(tail 호출이라고도 함)는 루프와 동일해집니다. [해결] 함수 sumOdds(n)의 Java 정의를 작성하여 n보다 적거나 동일한 홀수 정수의 합계를 생성합니다. 예를 들어 sumOdds(3) = 1 + 3 = 4, sumOdds(7) = 1 + 3 + 5 + 7 = 16입니다. 재귀 사용. Java에서 함수 호출 메커니즘은 메서드 호출 자체를 가질 가능성을 지원합니다. 이 기능을 재귀라고 합니다. 이와 같은 재귀 프로시저에 대해 이야기할 때 수행된 다양한 메서드 호출을 다이어그램으로 설명할 수 있는 것이 유용합니다. 재귀 트리를 사용 하 여이 작업을 수행 합니다. fib(5)를 계산하기 위한 재귀 트리는 그림 18.1에 있습니다. 컴퓨터를 사용하지 않고 mcCarthy(50)의 값을 결정합니다.

이 결과를 계산하는 데 mcCarthy()에서 사용하는 재귀 호출 수를 지정합니다. 모든 양수 정수 n에 대해 기본 케이스에 도달했거나 이 함수가 재귀 루프로 들어가는 n 값을 찾습니다. 하지만 재귀로, 우리는 마법의 가정을 통해 생각하여 그것을 할 수 있습니다. 우리가 네 글자 단어를 가지고 있다면, 우리의 마법의 가정은 우리가 우리의 재귀 방법은 네 글자 미만으로 모든 단어를 처리하는 방법을 알고 가정 할 수 있습니다. 그래서 우리가 바라는 것은 네 글자 단어의 각 문자를 가지고, 나머지 문자의 모든 세 글자 순열의 앞에 그 편지를 배치하는 것입니다. 동쪽을 감안할 때, 우리는 동쪽에 도착하고, 먹고, 먹고, 에사ᆞ에스타ᆞ에타ᆞ에타ᆞ에타ᆞ에타ᆞ에타ᆞ에타ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ 그런 다음 우리는 에스트의 여섯 순열 의 앞에 배치, 다음 먹는 모든 여섯 순열 앞에 s, 그리고 마지막으로 eas의 모든 여섯 순열 앞에 t. 따라서 네 글자 단어의 모든 순열을 표시하는 네 개의 재귀 호출이있을 것입니다. 9줄을 확인하면 함수가 자체적으로 호출하여 반환해야 하는 값을 계산합니다. 재귀 함수에 대한 각 호출은 자체 변수 복사본을 가져옵니다.