재귀함수 예제 자바

Posted by abitou on Αυγ 01, 2019

재귀 함수의 두 가지 주요 요구 사항이 있습니다: 상호 재귀의 예를 보려면 다음 코드를 고려하십시오: 꼬리 재귀와 꼬리가 아닌 재귀의 차이점은 무엇입니까? 재귀 함수는 재귀 호출이 함수에 의해 실행되는 마지막 일 때 꼬리 재귀함수입니다. 자세한 것은 꼬리 재귀 용품을 참조하십시오. 재귀에서 다른 함수 호출에 메모리가 할당되는 방법은 무엇입니까? main()에서 모든 함수가 호출되면 스택에 메모리가 할당됩니다. 재귀 함수는 자체적으로 호출되고, 호출된 함수에 대한 메모리는 호출 함수에 할당된 메모리 위에 할당되고 각 함수 호출에 대해 로컬 변수의 다른 복사본이 만들어집니다. 기본 케이스에 도달하면 함수가 호출되고 메모리가 할당 해제되고 프로세스가 계속되는 함수에 해당 값을 반환합니다. 컴파일러는 이 점을 사용하여 메모리를 최적화할 수 있지만 Java 컴파일러는 현재로서는 꼬리 재귀에 최적화되지 않습니다. 이전 장에서 재귀 입력을 검토할 때 몇 가지 재귀 예제를 살펴보았지만 루프를 사용하여 쉽게 해결할 수 있었습니다. 이 장은 결국 재귀가 쉽게 할 수없는 일을 할 수있는 예를 보게 될 것이라고 약속했다. 이제 몇 가지 예제를 살펴보겠습니다. 그러나 특히 유용하지는 않지만 직장에서 재귀를 설명하는 좋은 방법을 설명하는 데 도움이되는 예제로 시작해 보겠습니다. 우리는 피보나치 시퀀스에서 숫자를 계산하는 재귀 방법을 구축 할 것입니다. 이 무한 시퀀스는 0과 1로 시작하여 0과 1로 시작하여 0과 1로 시작하여 0과 1로 생각하며, 각 후속 숫자는 앞의 두 피보나치 숫자의 합계입니다.

따라서 두 번째 숫자는 0 + 1 = 1입니다. 그리고 세 번째 피보나치 번호를 얻으려면 첫 번째 (1)와 두 번째 (1)를 합산하여 2를 얻습니다. 네 번째는 두 번째(1)와 세 번째(2)의 합계이며, 3입니다. 등등. 이 예제에서는 isEven(3)과 같은 함수 호출이 isOdd(2)와 동일하며, 이는 isEven(1)과 동일하며, 이는 isOdd(0)와 마지막으로 동일합니다. 이것은 다른 모든 인수가 함수에 전달될 때 발생하며 0으로 줄어듭니다. 이 자습서에서는 Java에서 재귀 개념을 소개하고 몇 가지 간단한 예제를 보여 주어 설명했습니다. 팩트(10)가 호출되면 팩트(9), 팩트(8), 팩트(7) 등을 호출하지만 숫자는 100에 도달하지 않습니다. 따라서 기본 케이스에 도달하지 못했습니다.

스택에서 이러한 함수에 의해 메모리가 소진되면 스택 오버플로 오류가 발생합니다. 간단한 함수를 통해 재귀가 어떻게 작동하는지 예를 들어 보겠습니다. 스택 오버플로 오류가 재귀에서 발생하는 이유는 무엇입니까? 기본 케이스에 도달하지 않거나 정의되지 않으면 스택 오버플로 문제가 발생할 수 있습니다. 우리가 이것을 이해하기 위해 예를 들어 봅시다. 이 함수는 1부터 시작하여 9번째 위치에서 피보나치 번호를 제공합니다. 위의 예제에서는 n < = 1에 대한 기본 사례가 정의되고 더 큰 숫자 값은 기본 케이스에 도달할 때까지 더 작은 값으로 변환하여 해결할 수 있습니다. 예를 들어 정수를 0에서 일부 값 n으로 합산한다고 가정합니다: Recursion은 Java에서 사용할 수 있는 기본 프로그래밍 기법으로 메서드가 자체 호출하여 문제를 해결합니다. 이 기술을 사용하는 메서드는 재귀적입니다.

많은 프로그래밍 문제는 재귀로만 해결할 수 있으며 다른 기술로 해결할 수 있는 몇 가지 문제는 재귀로 더 잘 해결됩니다. 재귀로 특정 문제를 해결하는 방법은 무엇입니까? 아이디어는 하나 이상의 작은 문제의 관점에서 문제를 나타내고 재귀를 중지하나 이상의 기본 조건을 추가하는 것입니다. 예를 들어,(n-1)의 계수를 알고 있는 경우 계수 n을 계산합니다. 요인에 대한 기본 케이스는 n = 0입니다. n = 0일 때 1을 반환합니다. 재귀에 대한 재귀 코딩 연습에 대한 퀴즈: 재귀에 대한 모든 재귀 연습 문제 해결 에 대한 재귀 에 대한 반복 적 접근 방식은 잠재적으로 더 나은 성능을 제공 할 수 있습니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement