Maison  >  Article  >  tutoriels informatiques  >  Écrivez une fonction récursive en Java pour trouver la valeur maximale d'un tableau

Écrivez une fonction récursive en Java pour trouver la valeur maximale d'un tableau

WBOY
WBOYavant
2024-01-13 19:06:231005parcourir

Comment utiliser Java pour atteindre la valeur maximale d'un tableau de manière récursive

public static void main(String[] rags){

int [] objectif = nouveau int[100];

int point = 0;

//....Initialisez le tableau ici

int max = objectif[0];

max = getMax(max,point,objectif);

//...Autres traitements

}

//Méthode récursive

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

if(point==aim.length) //valeur critique

retour maximum ;

//Lorsque la valeur critique n'est pas atteinte, prenez la valeur maximale et effectuez une récursion

max = max >= objectif[point] ? max : objectif[point];

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

}

Comment implémenter l'algorithme récursif de recherche binaire en Java

recherche récursive binaire de classe publique {

public static void main(String[] args) {

//Définissez le tableau. Notez que le tableau de recherche binaire doit être un tableau ordonné !

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

//Accepter la valeur de retour après la recherche : valeur d'index, sinon, elle est -1;

//Test trouver l'élément : 9

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

System.out.println ("La position d'index du numéro recherché est : "+a);

}

//La liste des paramètres est la suivante : tableau à rechercher, numéro à rechercher, index de tête, index de queue !

public static int binaire (int[] arr, int key, int star, int end)//recursion

{

//Créez à chaque fois que vous entrez, la valeur de l'indice intermédiaire !

int mid = (étoile + fin) / 2;

//Si le nombre recherché est inférieur à la tête ou à la queue, ou si l'indice de tête est supérieur à l'indice de queue, cela signifie qu'un tel nombre n'existe pas et -1 est renvoyé ;

if (touche arr[fin] || étoile > fin) {

retour -1;

}

//Si la valeur médiane est inférieure au nombre recherché, redéfinissez l'index d'en-tête et déplacez-le vers la position médiane +1, en filtrant la moitié des nombres !

if (arr[mid]

//Démarrez la récursivité !

retour binaire(arr, clé, milieu + 1, fin);

//Sinon, si la valeur médiane est supérieure au nombre recherché, déplacez l'index de queue en position médiane -1 et filtrez la moitié des nombres !

} sinon si (arr[mid] > clé) {

//Démarrez la récursivité !

retour binaire (arr, clé, étoile, milieu - 1);

} autre {

//Si non, il est trouvé, retournez à l'index !

retour à mi-chemin ;

}

}

}

Écrivez une fonction récursive en Java pour trouver la valeur maximale dun tableau

Comment la récursion de Java est exécutée et comment la commande est exécutée

factest(8) entre la fonction factest, if(n==1) return 1; // S'il n'est pas établi, exécutez else return n*factest(n-1); // La valeur de retour est 8*factest(7); )

factest(7) entre dans la fonction factest, if(n==1) return 1 // S'il n'est pas établi, exécutez else

else return n*factest(n-1); // La valeur de retour est 7*factest(6)

……

Jusqu'à N=1, à ce moment if(n==1) return 1; // Établi, la valeur de retour est 1, c'est-à-dire 1!=1

Calculez ensuite la valeur de retour de factest(2) comme suit : 2*factest(1) = 2

Continuez ensuite à calculer la valeur de retour de factest(3) : 3*factest(2) = 6

... Jusqu'à N=8, on obtient factest(8) = 8*factest(7) = 40320

Comment utiliser la récursivité pour résoudre ce problème en JAVA Master ?

Le programme récursif Java que vous souhaitez écrire est le suivant :

importer java.util.Scanner ;

cours public GGG {

public static void main(String[] args) {

int N = 0;

Scanner sc=nouveau Scanner(System.in);

int num=sc.nextInt();

pour(int n=0;n

N=sc.nextInt();

int a[]=nouveau int[N];

pour(int i=0;i

a[i]=sc.nextInt();

}

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

processus(a,0);

System.out.println();

}

}

processus vide statique privé (int[] a, int n) {

si(n==0){

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

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

autre

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

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

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

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

autre

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

retour ;

}autre{

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+" ");

autre

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

}

processus(a,n+1);

}

public static boolean isPrime(int num) {

int i;

pour(i=2;i

if(num%i==0)

pause;

}

if(i==num){

retour vrai ;

}

retour faux ;

}

}Résultat de l'exécution :

2

5

5 7 2 9 13

cas 1:1 2 1 2 0

3

10 4 5

cas 2:0 1 0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer