자바의 재귀 알고리즘에 대한 자세한 설명을 여러분께 부탁드리고 싶습니다.
Java의 재귀알고리즘에 대해 자세한 설명을 부탁드리고 싶습니다
공개 수업 테스트{
public static int getResult(int 매개변수) {
if (매개변수 == 0) { 결과 반환; } 또 다른 { 결과 *= 매개변수; return recursiveFunction(매개변수 - 1, 결과); }
반품번호;
}
public static void main(String[] args) { //여기에 코드를 작성하세요 }
int 결과 = 결과(5);
System.out.println(결과);
}
}
실행 원리는 다음과 같습니다.
result(5) 처음에는 매개변수가 1보다 작거나 같은지 확인하기 위해 함수 본문을 입력합니다. 이때 매개변수는 5이고 조건이 성립되지 않습니다. 즉, 5 * 결과(5-1)이고, 프로그램이 반복적으로 실행됩니다...
5*결과(5-1)
4*결과(4-1)
3*결과(3-1)
2 * result(2 - 1) 이 시점에서 매개변수는 1과 같고 조건을 충족합니다. 함수는 1을 반환하고 레이어별로 반환합니다. 즉:
결과(1) =1
2*결과(1)=2*1=2
3*결과(2)=3*2=6
4*결과(3)=4*6=24
5*결과(4)=5*24=120
자바의 재귀적 방법을 사용하여 n개의 숫자를 중복 없이 완전히 배열하세요. n 3
프로그램은 다음과 같으며 입력 형식은 다음과 같습니다.
5
3 1 2 1 2는 첫 번째 줄이 다음에 입력할 숫자의 개수를 나타내는 숫자라는 의미입니다. 두 번째 줄에는 정렬할 숫자를 나타내는 n개의 숫자가 있습니다. 입력에서는 정렬할 숫자가 모두 음수가 아닌 숫자라고 가정합니다.
java.io.파일 가져오기;
java.io.FileNotFoundException 가져오기;
java.util.Arrays 가져오기;
java.util.Scanner 가져오기;
공개 수업 메인 {
정적 최종 int maxn = 1000;
int n; //배열 요소 수
int[]a // 배열
boolean[] Used; // 재귀 프로세스 중에 해당 요소가 사용되었는지 여부를 표시하는 데 사용되는 보조 변수, Used[i]는 i 번째 요소가 사용되었는지 여부를 나타냅니다
int[] cur; // 현재 배열 번호를 저장합니다
// 중복 없이 전체 배열을 반복적으로 인쇄합니다. 현재 idx 위치에 인쇄 중입니다
void print_comb(int idx) {
idx == n이면 마지막 요소를 순회했으며 cur를 출력할 수 있다는 의미입니다.
for(int i = 0; i
if(i > 0) System.out.print("");
System.out.print(cur[i]);
}
System.out.println();
}
int last = -1; // 중복을 피하기 위해 마지막 변수를 사용하여 마지막 검색 값을 기록합니다
for(int i = 0; i
if(used[i]) 계속;
if(last == -1 || a[i] != last) { // 현재 숫자가 반복되지 않고 사용되지 않은 경우에만 재귀가 계속됩니다
마지막 = a[i];
cur[idx] = a[i];
//역추적 방법
used[i] = 사실;
print_comb(idx + 1);
사용됨[i] = 거짓;
}
}
}
public void go()는 FileNotFoundException을 발생시킵니다. // 메소드 본문 구현 }
{
Scanner in = new Scanner(new File("data.in")); 구문은 data.in이라는 파일에서 입력을 읽는 데 사용되는 in이라는 Scanner 개체를 만드는 것입니다.
//데이터 읽기 및 정렬
n = in.nextInt();
a = 새로운 정수[n];
for (int i = 0; i
Arrays.sort(a);
//보조변수 초기화 및 중복없는 전체 배열 시작
cur = 새로운 int[n];
used = 새로운 부울[n];
for(int i = 0; i
print_comb(0);
in.close();
}
public static void main(String[] args)에서 FileNotFoundException이 발생합니다. 이는 프로그램 항목을 시작하는 데 사용되는 Java 프로그램의 기본 메소드입니다. 이 방법에서는 파일 읽기, 데이터 처리 등과 같은 일부 작업을 수행할 수 있습니다. 그중 FileNotFoundException 발생은 실행 중에 파일을 찾을 수 없음 예외가 발생할 수 있음을 나타냅니다. 이 예외가 발생하면 프로그램은 FileNotFoundException 예외를 발생시킵니다. 이 방법에서는 파일 읽기 및 예외 처리를 처리하는 특정 코드 논리를 작성할 수 있습니다.
new Main().go();
}
} 객관적으로 말하면 비재귀적 및 비반복적 전체 순열은 상대적으로 간단하고 효율적입니다.
Java에서 재귀의 역할은 무엇인가요? 재귀를 사용하는 이유
두 질문은 사실 하나의 질문이겠죠?
재귀의 역할: 재귀 알고리즘은 재귀로 정의된 일부 문제를 해결할 수 있습니다.
먼저 재귀적 정의의 문제점이 무엇인지 이해해야 합니다. 간단히 말해서, 재귀적으로 정의된 문제는 구조는 동일하지만 크기가 더 작은 더 작은 문제를 포함하는 큰 문제입니다.
예를 들어 n 계승의 정의는 다음과 같이 이해될 수 있습니다.
n!= n*(n-1)!
위의 분석을 통해 (n-1)이 n!보다 작은 문제라는 결론을 내리는 것은 어렵지 않습니다. 이 방법에 따라 문제를 지속적으로 분해함으로써 우리는 기본적인 알려진 데이터를 얻을 수 있습니다. 그런 다음 역추출을 통해 최종 결과를 얻을 수 있습니다.
n의 계승 알고리즘은 다음과 같습니다.
private static int jieCheng(int n) { 인수 n이 계산할 값을 나타내는 팩토리얼(factorial)을 계산하는 방법입니다. 자세한 설명은 다음과 같습니다. - "private"은 메소드가 현재 클래스에서만 표시되고 다른 클래스에서는 액세스할 수 없음을 의미합니다. - "정적"은 메서드가 정적 메서드이고 개체를 인스턴스화하지 않고 클래스 이름을 통해 직접 호출할 수 있음을 의미합니다. - "int"는 메서드가 결과로 정수 값을 반환한다는 의미입니다. - "jieCheng"은 메소드의 이름이며 필요에 따라 이름을 지정할 수 있습니다.
if(n==1)
반환 1;
그밖에 {
return n*jieCheng(n-1);
}
}
또한 이진 트리의 정의도 재귀적이므로 많은 이진 트리 작업이 재귀를 통해 구현됩니다.
재귀를 사용하면 프로그램이 매우 간결해집니다.
자바의 재귀 적용! f20 1 f21 4 fn 2 2 fn 1 fnwhere
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
publicclassTest {
publicstaticintf(intn){
if(n==20){
반품1;
}elseif(n==21){
return4;
}elseif(n
returnf(n+2)-2*f(n+1);
}그밖에{
return2*f(n-1)+f(n-2);
}
}
public static void main(String[] args) {
System.out.println(f(10)); //f(10)의 값을 인쇄합니다
}
}
테스트되었습니다. 주 함수에 f(n)을 입력합니다. 여기서 n은 수동으로 조정된 매개변수이며 해당 출력 결과를 얻을 수 있습니다.
위 내용은 자바의 재귀 알고리즘에 대한 자세한 설명을 여러분께 부탁드리고 싶습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

증기 구름 오류는 여러 가지 이유로 인해 발생할 수 있습니다. 게임을 원활하게 플레이하려면 게임을 시작하기 전에이 오류를 제거하기 위해 몇 가지 조치를 취해야합니다. Php.cn Software는이 게시물에서 가장 유용한 정보뿐만 아니라 몇 가지 최선의 방법을 소개합니다.

컴퓨터에 PC App Store라는 프로그램이 있고 의도적으로 설치되지 않은 경우 PC가 맬웨어에 감염 될 수 있습니다. Php.cn 의이 게시물은 PC 앱 스토어 맬웨어를 제거하는 방법을 소개합니다.

하드 드라이브가 문제가 발생했다고 의심되면 Windows 7에서 오류를 확인할 수 있습니다.이 Php.cn Post는 FixDisk Wind

많은 Surfacebook 사용자는 Windows 11/10에서 "EW_USBCCGPFILTER.SYS에 의해 차단 된 핵심 분리"를 충족한다고보고합니다. Php.cn 의이 게시물은 성가신 문제를 해결하는 데 도움이됩니다. 당신의 독서를 계속하십시오.

ExplorErpatcher는 Windows 11 시작 메뉴, 작업 표시 줄, 파일 탐색기 등을 사용자 정의 할 수있는 오픈 소스 휴대용 실행 파일입니다. 그러나 많은 사용자가 HackTool : Win64/ExplorerPatcher! MTB에 대해이 트로이 목마 경고를받습니다. 왜 그런 일이 발생합니까?

Windows 10/11에서 NVIDIA 드라이버와 같은 그래픽 드라이버를 설치 한 후 검은 색 화면을 만난 적이 있습니까? 이제 Php.cn 의이 게시물에서 NVIDIA 드라이버 업데이트 블랙 스크린에 대한 솔루션을 시도 할 가치가 있습니다.

Windows X-Lite Optimum 11 23H2 Home 또는 Optimum 11 Pro는 Windows 11 23H2를 기반으로 사용자 정의 라이트 시스템이 필요한 경우 옵션이 될 수 있습니다. 계속 읽고 Php.cn은 Optimum 11 23H2 ISO를 다운로드하고 PC에 프로 또는 홈을 설치하는 방법을 보여줍니다.

Windows 11 KB5034204의 새로운 개선 및 버그 수정을 알고 싶으십니까? 장치에서 Windows 11 KB5034204를 얻는 방법을 원하십니까? 이 게시물에서는 Php.cn 소프트웨어가 알고 싶은 정보를 소개합니다.
