Maison > Article > tutoriels informatiques > Écrivez une fonction récursive en Java pour trouver la valeur maximale d'un tableau
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);
}
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 ;
}
}
}
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
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!