공개 수업 Util {
public static void main(String[] args) {
System.out.println(getMj(2000));
}
public static doublecalculateArea(double n){
if(n==1){
1.0을 반환합니다;
}그밖에{
더블 r = (n-1) * (n-1) * (n+1) * (2*n+1) / (n * n * n * (2*n-1));
return r*getMj(n-1);
}
}
}
재귀 알고리즘의 전제 조건은 일반 공식을 이해하는 것입니다. 2000은 곡선 삼각형을 2000개의 직사각형으로 나누는 것을 의미합니다. 구체적인 원리는 아래 그림에서 볼 수 있습니다.
그림 1의 알고리즘 사용:
an=(n+1)(2n+1) /6n^2
간단하게 작성하는 방법은 다음과 같습니다.
공개 수업 Util {
public static void main(String[] args) {
System.out.println(getMj(100000));
}
public static doublecalculateArea(double n){
return (n+1)*(2*n+1)/(6*n*n);
}
}
자바 재귀 문제
(2) 재귀 전략을 사용할 때는 재귀 종료라고도 하는 명확한 재귀 종료 조건이 있는지 확인해야 합니다.
재귀 알고리즘은 일반적으로 세 가지 유형의 문제를 해결하는 데 사용됩니다.
(1) 데이터의 정의는 재귀적으로 정의됩니다. (피보나치 함수)
(2) 문제 해결은 재귀 알고리즘에 따라 구현됩니다. (추적)
(3) 데이터의 구조적 형태는 재귀적으로 정의됩니다.
다음 예에서는 n의 계승을 재귀적으로 계산합니다.
공개 수업 테스트 {
public static int 계승(int n) {
if(n == 0){
반환 1;
}그밖에{
return n * 계승(n-1);
}
}
public static void main(String[] args) {
System.out.println(factorial(3));
}
}
Java 데이터 구조에서 반감기 검색의 재귀 알고리즘에는 전문가의 지도가 필요합니다!
공개수업 검색 {
public static boolean BinarySearch(int[] a, int x, int left, int right) { // 이진 검색의 주요 방법 // ... }
if (x == a[왼쪽] || x == a[오른쪽]) { return true; // 찾았으면 true를 반환합니다. }
(오른쪽-왼쪽)의 결과가 음수이면 오른쪽 값이 왼쪽 값보다 작다는 의미입니다. int mid = (왼쪽+오른쪽)/2 //그렇지 않으면 두 점
if(x == a[mid]) return true; // 중간 요소를 찾아 true를 반환합니다
그렇지 않으면{ //그렇지 않으면
x가 중간 요소보다 크면 이진 검색 함수(binarySearch)를 반환하고 계속해서 배열의 오른쪽 절반(a)에서 x를 검색합니다. 즉, binarySearch(a,x,mid+1,right) . 이를 통해 검색 범위를 좁히고 검색 효율성을 높일 수 있습니다.
else return binarySearch(a, x, left, mid-1); // 대상 값이 중간 요소보다 작으면 왼쪽 절반에서 계속 검색합니다.
}
}
public static final int[] sort(int[] a) { // 정수 배열을 정렬하는 데 사용되는 메서드입니다. // 버블 정렬, 삽입 정렬, 선택 정렬, 퀵 정렬 등 모든 정렬 알고리즘을 사용할 수 있습니다. // 여기서는 버블 정렬을 사용하여 배열을 정렬합니다. for (int i = 0; i
a[j + 1]) { // 요소 위치 바꾸기 int 온도 = a[j];
for (int i = 0; i
for (int j = 0; j if(a[i]스왑(a,i,j);
}
}
}
반품;
}
private static void swap(int[] a, int i, int j) { //배열 a에서 첨자 i와 j 요소의 위치를 바꾸는 전용 정적 함수 스왑을 정의합니다
int 온도 = a[i];
a[i] = a[j];
a[j] = 온도;
}
public static void print(int[] a) { //인쇄 함수 for (int i = 0; i System.out.println();
for (int i = 0; i
System.out.print(a[i]);if(i!=a.length-1) { System.out.print(","); }
}
System.out.println();
}
public static void main(String[] args) { //테스트 방법
int[] a = {90, 12, 21, 32, 51, 78, 87, 98}은 8개의 정수를 포함하는 배열입니다.
print(sort(a));
System.out.println(binarySearch(sort(a), 40, 0, a.length-1));은 정렬된 배열 a에서 값이 40인 요소를 이진 검색하는 데 사용되는 코드입니다.
}
}
위 내용은 재귀를 사용하여 Java에서 곡선 y=x와 직선 x=1의 제곱의 교차점을 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!