Rumah  >  Artikel  >  tutorial komputer  >  Tulis fungsi rekursif dalam java untuk mencari nilai maksimum tatasusunan

Tulis fungsi rekursif dalam java untuk mencari nilai maksimum tatasusunan

WBOY
WBOYke hadapan
2024-01-13 19:06:23964semak imbas

Cara menggunakan java untuk mencapai nilai maksimum tatasusunan secara rekursif

utama kekosongan statik awam(String[] kain buruk){

int [] aim = new int[100];

titik int = 0;

//....Awalkan tatasusunan di sini

int maks = matlamat[0];

maks = dapatkanMaks(maks, mata, matlamat);

//...Pemprosesan lain

}

// Kaedah rekursif

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

jika(titik==tujuan.panjang) //nilai kritikal

maksimum pulangan;

//Apabila nilai kritikal tidak tercapai, ambil nilai maksimum dan lakukan rekursi

maks = maks >= matlamat[titik] ?

kembali getMax(maks,mata+1,tuju);

}

Bagaimana untuk melaksanakan algoritma rekursif carian binari dalam Java

carian rekursif binari kelas awam {

utama kekosongan statik awam(String[] args) {

//Tentukan tatasusunan Ambil perhatian bahawa tatasusunan carian binari mestilah tatasusunan tertib!

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

//Terima nilai pulangan selepas carian: nilai indeks, jika tidak, ia adalah -1;

// Elemen cari ujian: 9

int a=binary(arr, 9, 0, arr.length - 1);

System.out.println ("Kedudukan indeks nombor yang sedang dicari ialah: "+a);

}

//Senarai parameter mengikut urutan: tatasusunan untuk dicari, nombor untuk dicari, indeks kepala, indeks ekor!

binari int statik awam(int[] arr, kunci int, bintang int, int end)//rekursi

{

//Buat setiap kali anda masuk, nilai indeks perantaraan!

int pertengahan = (bintang + akhir) / 2;

//Jika nombor yang dicari kurang daripada kepala atau ekor, atau indeks kepala lebih besar daripada indeks ekor, bermakna tiada nombor tersebut dan -1 dikembalikan;

jika (kunci

arr[end] || bintang > tamat) {

kembali -1;

}

//Jika nilai tengah kurang daripada nombor yang dicari, takrifkan semula indeks pengepala dan alihkannya ke kedudukan +1 tengah, tapis separuh daripada nombor!

jika (arr[pertengahan] // Mulakan rekursi!

return binary(arr, key, mid + 1, end);

// Jika tidak, jika nilai tengah lebih besar daripada nombor yang dicari, alihkan indeks ekor ke kedudukan tengah -1 dan tapis separuh daripada nombor!

} lain jika (arr[mid] > kunci) {

// Mulakan rekursi!

perduaan pulangan(arr,kunci, bintang, pertengahan - 1);

} lain {

//Jika tidak, didapati, kembali ke indeks!

kembali tengah;

}

}

}

Tulis fungsi rekursif dalam java untuk mencari nilai maksimum tatasusunan

Cara rekursi Java dilaksanakan dan cara perintah itu dilaksanakan

factest(8) memasuki fungsi factest, if(n==1) return 1; // Jika tidak ditubuhkan, laksanakan else return n*factest(n-1); )

factest(7) memasuki fungsi factest, if(n==1) return 1;

else return n*factest(n-1); // Nilai pulangan ialah 7*factest(6)

……

Sehingga N=1, pada masa ini jika(n==1) kembalikan 1; // Ditubuhkan, nilai pulangan ialah 1, iaitu 1!=1

Kemudian hitung nilai pulangan terfakta(2): 2*terfakta(1) = 2

Kemudian teruskan mengira nilai pulangan terfakta(3): 3*terfakta(2) = 6

... Sehingga N=8, kita dapat fakta(8) = 8*fakta(7) = 40320

Bagaimana menggunakan rekursi untuk menyelesaikan masalah ini dalam JAVA Master

Program rekursif Java yang anda ingin tulis adalah seperti berikut:

import java.util.Scanner;

GGG kelas awam {

utama kekosongan statik awam(String[] args) {

int N = 0;

Pengimbas sc=Pengimbas baharu(System.in);

int num=sc.nextInt();

untuk(int n=0;n

N=sc.nextInt();

int a[]=int baharu[N];

untuk(int i=0;i

a[i]=sc.nextInt();

}

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

proses(a,0);

System.out.println();

}

}

proses lompang statik peribadi(int[] a, int n) {

jika(n==0){

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

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

lain

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

}lain jika(n==a.panjang-1){

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

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

lain

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

kembali;

}lain{

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

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

lain jika(isPrime(a[n-1])||isPrime(a[n+1]))

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

lain

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

}

proses(a,n+1);

}

boolean statik awam ialahPrime(int num) {

int i;

untuk(i=2;i

jika(bilangan%i==0)

rehat;

}

jika(i==bilangan){

kembali benar;

}

kembali palsu;

}

}Hasil lari:

2

5

5 7 2 9 13

kes 1:1 2 1 2 0

3

10 4 5

kes 2:0 1 0

Atas ialah kandungan terperinci Tulis fungsi rekursif dalam java untuk mencari nilai maksimum tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:docexcel.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam