공개 클래스 이진 재귀 검색 {
public static void main(String[] args)은 Java 프로그램의 진입점이자 프로그램 실행의 시작 위치입니다. 이 방법을 사용하면 프로그램의 주요 로직과 기능을 작성할 수 있습니다. 이 메소드는 JVM(Java Virtual Machine)에 의해 호출되고 실행되기 전에 특정 형식으로 정의되어야 합니다. 기본 메소드의 매개변수 목록에서 args는 명령줄 매개변수를 수신하는 데 사용할 수 있는 문자열 배열입니다. main 메소드에 코드를 작성하여 출력, 계산, 루프, 조건부 판단 등 다양한 기능을 구현할 수 있습니다.
//배열을 정의하세요. 이진 검색 배열은 순서가 지정된 배열이어야 합니다!
int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 }; 9개 요소를 포함하는 정수 배열의 선언 및 초기화 문입니다. 각 요소의 값은 1, 3, 5, 7, 9, 11, 13, 15, 17입니다. 이런 방식으로 arr이라는 정수 배열을 만들고 여기에 초기값을 할당합니다. 후속 프로그램에서는 이 배열을 사용하여 검색, 정렬 및 계산과 같은 다양한 작업을 수행할 수 있습니다
//검색 후 반환 값을 수락합니다. 인덱스 값, 그렇지 않은 경우 -1입니다.
//찾기 요소 테스트: 9
int a = 바이너리 검색(arr, 9, 0, arr.length - 1);
System.out.println("검색 중인 숫자의 인덱스 위치: " + a);
}
//매개변수 목록은 검색할 배열, 검색할 숫자, 헤드 인덱스, 테일 인덱스 순서입니다!
public static int bin(int[] arr, int key, int start, int end) // 재귀
{
//들어올 때마다 중간 인덱스 값으로 생성됩니다!
int mid = (별 + 끝) / 2;
찾으려는 숫자가 시작 인덱스보다 작거나 끝 인덱스보다 크거나, 시작 인덱스가 끝 인덱스보다 크면 해당 숫자가 존재하지 않는다는 의미이며 -1이 반환됩니다.
if (키 arr[end] || 시작 > 끝) {
반품 -1;
}
//가운데 값이 검색 중인 숫자보다 작을 경우 헤더 인덱스를 재정의하여 중간 +1 위치로 이동시켜 숫자의 절반이 걸러질 수 있도록 해주세요!
if (arr[mid]
//재귀를 시작하세요!
return binary(arr, key, mid + 1, end) // 배열의 후반부에서 이진 검색을 계속합니다
//그렇지 않고 중간 값이 검색 중인 숫자보다 큰 경우 꼬리 인덱스를 다시 중간 위치인 -1로 이동하여 숫자의 절반을 필터링할 수 있습니다!
} else if (arr[mid] > key) {
//재귀를 시작하세요!
바이너리 반환(arr, key, start, mid - 1);
} 그 외 {
//찾지 못하면 색인으로 돌아갑니다!
중반납;
}
}
}
첫 번째 질문:
공개 수업 CalSum {
public static void main(String[] args)은 Java 프로그램의 진입점이자 프로그램 실행의 시작 위치입니다. 이 방법을 사용하면 프로그램의 주요 로직과 기능을 작성할 수 있습니다. 이 메소드는 JVM(Java Virtual Machine)에 의해 호출되고 실행되기 전에 특정 형식으로 정의되어야 합니다. 기본 메소드의 매개변수 목록에서 args는 명령줄 매개변수를 수신하는 데 사용할 수 있는 문자열 배열입니다. Main 메소드에 코드를 작성하여 출력, 계산, 루프, 조건부 판단 등 다양한 기능을 구현할 수 있습니다.
{
CalSum calSum = 새로운 CalSum();
int result = calSum.calculate(100); // calSum 객체의 계산 메소드를 호출하고 매개변수 100을 전달한 후 결과를 결과 변수에 할당합니다.
System.out.println("1+2+3+...+100의 합은 다음과 같습니다." + result);
}
공개 정수 계산(정수)
{
int 결과 = 0;
if(숫자 == 1)
{
결과 = 1;
}
그밖에
{
result = number +calculate(number - 1); 결과는 현재 숫자와 숫자-1의 반환 값을 더한 것입니다. 이 표현식은 재귀 호출이 이루어질 때마다 number가 1이 될 때 재귀가 중지될 때까지 number의 값이 1씩 감소합니다. 재귀 호출의 반환 값은 최종 결과에 지속적으로 누적됩니다. 이런 식으로 시퀀스의 합을 구할 수 있습니다.
}
반품 결과;
}
}
반복은 일반적인 루프입니다.
예: 1에서 10까지 더하기
int 합계=0
for(int i=0;i
sum=sum+i;
}
재귀는 함수가 직접 또는 간접적으로 자신을 호출하는 것을 의미합니다.
예: 옛날 어느 절에 큰 스님과 작은 스님이 있었는데, 큰 스님이 작은 스님에게 이야기를 해달라고 했습니다. 어느 절에서 작은 스님이 큰 스님에게 이야기를 해달라고 했더니, 큰 스님은 옛날에 어떤 절에 큰 스님과 작은 스님이 있었는데, 둘이 매일 같이 불교를 수행하고 공부했다고 말했습니다.
재귀의 특징:
다음 세 가지 조건이 있어야 합니다.
1. 간접적으로나 직접적으로 자신에게 전화하세요.
2. 게임을 플레이할 때 반드시 종료 조건을 설정하세요. 예를 들어 대사님이 입이 마르면 이야기를 듣지 않게 됩니다. 종료 조건을 설정하지 않으면 게임이 무한 루프에 빠질 수 있습니다.
3. (하고 싶은 일) 논리적인 몸체가 있어야 합니다.
public int sum(int x){
if(x
반품x;
}
return x+sum(x-1);
}
int s=10;
int total=sum(s);
이 예에서 sum 함수는 항상 자신을 호출하고 x+sum(x-1)을 반환합니다.
sum에는 종료 조건 x이 있습니다.
최종 결과는 10+9+8+7+... 1
을 반환하는 것입니다.많은 경우 반복과 재귀 모두 동일한 기능을 달성할 수 있지만 반복이 완료할 수 없는 일부 기능이 있습니다. 또한 재귀 코드는 더 간결하며 재귀를 능숙하게 사용하면 코드 품질을 향상시킬 수 있습니다.
위 내용은 재귀 알고리즘을 사용하여 Java 이진 검색을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!