>컴퓨터 튜토리얼 >컴퓨터 지식 >배열의 최대값을 찾기 위해 Java에서 재귀 함수를 작성합니다.

배열의 최대값을 찾기 위해 Java에서 재귀 함수를 작성합니다.

WBOY
WBOY앞으로
2024-01-13 19:06:231015검색

Java를 사용하여 재귀적으로 배열의 최대값을 얻는 방법

public static void main(String[] rags){

int [] 목표 = 새로운 int[100];

int 포인트 = 0;

//...여기서 배열을 초기화하세요

int 최대 = 목표[0];

max = getMax(최대, 포인트, 목표);

//...기타 처리

}

//재귀적 방법

public int getMax(int ​​​​max,int point,int[] aim){

if(point==aim.length) //임계값

반품 최대치;

//임계값에 도달하지 못한 경우 최대값을 취하여 재귀를 수행합니다

max = 최대 >= 목표[포인트] ? max : 목표[포인트];

return getMax(max,point+1,aim);

}

Java에서 이진 검색의 재귀 알고리즘을 구현하는 방법

공개 클래스 이진 재귀 검색 {

public static void main(String[] args) {

//배열을 정의하세요. 이진 검색 배열은 순서가 지정된 배열이어야 합니다!

int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 };

//검색 후 반환 값을 수락합니다. 인덱스 값, 그렇지 않은 경우 -1입니다.

//찾기 요소 테스트: 9

int a=바이너리(arr, 9, 0, arr.length - 1);

System.out.println("검색 중인 숫자의 인덱스 위치: "+a);

}

//매개변수 목록은 검색할 배열, 검색할 숫자, 헤드 인덱스, 테일 인덱스입니다!

공용 정적 int 바이너리(int[] arr, int key, int star, int end)//recursion

{

//들어올 때마다 중간 인덱스 값을 생성!

int mid = (별 + 끝) / 2;

//검색 중인 숫자가 머리 또는 꼬리보다 작거나 머리 인덱스가 꼬리 인덱스보다 큰 경우 해당 숫자가 없으며 -1이 반환됨을 의미합니다.

if (key arr[end] || 별표 > end) {

반품 -1;

}

//가운데 값이 검색 중인 숫자보다 작다면 헤더 인덱스를 다시 정의하고 중간 +1 위치로 이동하여 숫자의 절반을 걸러냅니다!

if (arr[mid]

//재귀를 시작하세요!

바이너리 반환(arr, key, mid + 1, end);

//그렇지 않고 중간 값이 검색 중인 숫자보다 큰 경우 꼬리 인덱스를 중간 -1 위치로 이동하고 숫자의 절반을 필터링하세요!

} else if (arr[mid] > key) {

//재귀를 시작하세요!

반환 바이너리(arr,key,star,mid - 1);

} 그 외 {

//찾지 못하면 색인으로 돌아갑니다!

중반납;

}

}

}

배열의 최대값을 찾기 위해 Java에서 재귀 함수를 작성합니다.

Java의 재귀가 실행되는 방식과 순서가 실행되는 방식

factest(8)는 Factest 함수를 입력합니다. if(n==1) return 1; // 설정되지 않은 경우 else return n*factest(n-1) // 반환 값은 8*factest(7)입니다. )

factest(7)는 Factest 함수를 입력합니다. if(n==1) return 1 // 확립되지 않은 경우 else를 실행합니다

else return n*factest(n-1); // 반환 값은 7*factest(6)

N=1까지 이때 if(n==1) return 1; // 성립되면 반환값은 1, 즉 1!=1

그런 다음 Factest(2)의 반환 값을 계산합니다. 2*factest(1) = 2

그런 다음 계속해서 Factest(3)의 반환 값을 계산합니다. 3*factest(2) = 6

... N=8까지,factest(8) = 8*factest(7) = 40320

을 얻습니다.

재귀를 사용하여 JAVA에서 이 문제를 해결하는 방법은 무엇입니까? Master

작성하려는 Java 재귀 프로그램은 다음과 같습니다.

java.util.Scanner 가져오기;

공개 수업 GGG {

public static void main(String[] args) {

int N = 0;

Scanner sc=new Scanner(System.in);

int num=sc.nextInt();

for(int n=0;n

N=sc.nextInt();

int a[]=new int[N];

for(int i=0;i

a[i]=sc.nextInt();

}

System.out.print("case"+(n+1)+":");

프로세스(a,0);

System.out.println();

}

}

private static void process(int[] a, int n) {

if(n==0){

if(isPrime(a[n+1]))

System.out.print(1+"");

그밖에

System.out.print(0+"");

}else if(n==a.length-1){

if(isPrime(a[n-1]))

System.out.print(1+"");

그밖에

System.out.print(0+"");

반품;

}그밖에{

if(isPrime(a[n-1])&isPrime(a[n+1]))

System.out.print(2+"");

else if(isPrime(a[n-1])||isPrime(a[n+1]))

System.out.print(1+"");

그밖에

System.out.print(0+"");

}

프로세스(a,n+1);

}

public static boolean isPrime(int num) {

그래요;

for(i=2;i

if(num%i==0)

휴식;

}

if(i==num){

참을 반환합니다;

}

거짓 반환;

}

}실행 결과:

2

5

5 7 2 9 13

케이스 1:1 2 1 2 0

3

10 4 5

케이스 2:0 1 0

위 내용은 배열의 최대값을 찾기 위해 Java에서 재귀 함수를 작성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 docexcel.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제