자바의 재귀 알고리즘에 대한 자세한 설명을 여러분께 부탁드리고 싶습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

HP 스마트가 Windows 11/10/서버에 자동으로 설치되면 어떻게됩니까? Microsoft는 유틸리티를 출시했으며 KB5034510 : Microsoft 프린터 메타 데이터 문제 해결사 도구를 온라인으로 얻을 수 있습니다. 이 php.cn 게시물을 계속 읽고 찾으십시오

netwlv64.sys 블루 스크린은 Windows 11/10 운영 체제를 부팅하려고 할 때 일반적인 오류입니다. 이 BSOD 문제를 어떻게 해결하여 PC가 제대로 작동하도록 할 수 있습니까? 이 게시물에서는 php.cn이 수집 한 유용한 솔루션을 찾을 수 있습니다.

둘 이상의 프로그램을 동시에 수행하는 경우 Windows의 크기 조정이 도움이됩니다. 대부분의 여러분은 매일 컴퓨터 사용에서 창을 크기를 조정하려고 노력해야합니다. 이 Php.cn Post는 창 크기를 조정하는 방법을 알려주는 몇 가지 유용한 방법을 컴파일합니다.

Windows 10/11에서 로컬 계정에 대한 보안 질문을 비활성화하는 방법을 찾고 계십니까? Php.cn 의이 게시물에서는 지역 그룹 정책 편집자 및 레지스트리를 통해 지역 계정에 대한 보안 문제 사용을 방지하는 방법을 안내합니다.

Windows 11 Insider Preview Build 23486은 암호 사용 경험을 향상시키기 위해 새로운 기능인 Passkey 설정을 발표하겠다고 발표했습니다. 컴퓨터에서 새로운 패스 키를 생성하고 추가 할 수있을뿐만 아니라 그 중 하나를 삭제할 수 있습니다. 이 php.cn 포스트가 당신을 안내합니다

OneDrive에 로그인 할 때 "OneDrive가 서명하는 데 문제가있었습니다"오류로 고통 받고 있습니까? 이제 Php.cn 의이 게시물 에서이 OneDrive 로그인 문제를 해결하는 방법을 안내해 드리겠습니다.

Windows 11 및 Windows 10 데스크톱 아이콘이 겹치고 있습니까? Php.cn 의이 게시물에서는이 Windows 데스크탑 아이콘 버그를 제거하는 데 도움이되는 몇 가지 유용한 솔루션을 제공합니다.

OneDrive는 동일한 OneDrive 아이콘으로 파일 탐색기의 폴더를 두 번 보여줍니다. OneDrive에서 발생하는 버그입니다. 파일 탐색기에서 두 개의 OneDrive 폴더의 상황을 수정하는 효과적인 방법을 사용할 수 있습니다. Php.cn에 대한이 게시물이 도움이 될 것입니다


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

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