찾다
컴퓨터 튜토리얼컴퓨터 지식자바의 재귀 알고리즘에 대한 자세한 설명을 여러분께 부탁드리고 싶습니다.

자바의 재귀 알고리즘에 대한 자세한 설명을 여러분께 부탁드리고 싶습니다.

Jan 07, 2024 pm 12:14 PM
ja의 재귀 알고리즘자바의 재귀 알고리즘에 대해 좀 더 자세히 문의드리고 싶습니다.Java에서 재귀 방법을 사용하여 중복 없이 n개의 숫자 얻기

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 Excel办公网에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Microsoft 프린터 메타 데이터 문제 해결사 도구 : HP-Smart 버그 수정Microsoft 프린터 메타 데이터 문제 해결사 도구 : HP-Smart 버그 수정Apr 12, 2025 am 12:50 AM

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

Windows 10/11에서 SYS 블루 스크린 오류를 수정하는 방법 -MinitoolWindows 10/11에서 SYS 블루 스크린 오류를 수정하는 방법 -MinitoolApr 12, 2025 am 12:49 AM

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

Windows 10에서 창 크기를 조정하는 방법Windows 10에서 창 크기를 조정하는 방법Apr 12, 2025 am 12:48 AM

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

지역 계정에 대한 보안 질문을 비활성화하는 방법 10/11 -Minitool지역 계정에 대한 보안 질문을 비활성화하는 방법 10/11 -MinitoolApr 12, 2025 am 12:47 AM

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

Windows 11에서 앱 및 웹 사이트에 저장된 패스 키를 삭제하는 방법 -MinitoolWindows 11에서 앱 및 웹 사이트에 저장된 패스 키를 삭제하는 방법 -MinitoolApr 12, 2025 am 12:46 AM

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

수정 : OneDrive에 서명하는 데 문제가있었습니다 -Minitool수정 : OneDrive에 서명하는 데 문제가있었습니다 -MinitoolApr 12, 2025 am 12:45 AM

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

시대를 초월한 수정 - 데스크탑 아이콘이 Windows에서 겹치고 있습니다시대를 초월한 수정 - 데스크탑 아이콘이 Windows에서 겹치고 있습니다Apr 12, 2025 am 12:44 AM

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

'파일 탐색기에서 두 개의 OneDrive 폴더'문제를 해결하는 방법은 무엇입니까?'파일 탐색기에서 두 개의 OneDrive 폴더'문제를 해결하는 방법은 무엇입니까?Apr 12, 2025 am 12:43 AM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

DVWA

DVWA

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

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SecList

SecList

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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