Aujourd'hui, j'ai pris un examen et il y a eu une question:
écrire une méthode qui imprime des nombres entier dans la commande forte> ascendante forte> forte> récursivement forte> de 1 à n : P>
public class PrintIntegersAscendingOrder { static int counter = 0; public static void PrintIntegersAscendingOrder (int n) { if (n == 1) { System.out.printf("%d\n", ++counter); } else { System.out.printf("%d ", ++counter); PrintIntegersAscendingOrder(n-1); } } public static void main (String args[]) { PrintIntegersAscendingOrder(5); } }
3 Réponses :
le faire comme suit: comme @robohrobb a déjà signalé , le comptoir défait le but de la récursion dans votre code. Lorsque vous appelez une fonction de manière récursive, vous devez analyser trois choses importantes: p> puisque vous diminuez déjà le paramètre par
1 code> et le transmettez à la méthode pour l'appeler de manière récursive, vous pouvez simplement utiliser ce paramètre au lieu de créer une variable supplémentaire (par exemple
compteur code>). p> p>
Veuillez mentionner ce qui n'allait pas dans le code et comment ces solutions contribuent.
Vous pouvez le faire comme ceci: Vous n'avez pas besoin de la variable de compteur dans la classe, à l'aide de la récursivité, vous pouvez limiter l'appel de la méthode sur la méthode elle-même. p> remarque le Cet article devrait aider Vous Mise en route avec la récursion P> p> si (i <1) {retour; {retour;} code> ligne, cela met fin à l'appel (s) de méthode de récursif. P>
Dans votre code, vous avez défini dans votre méthode de classe A printintegersascenderner code> ayant le même nom de la classe
printintegersascender code> le contenant. Il s'agit d'une erreur qui peut être évitée par exemple de renommer la classe y compris à
imprimeurs code>. En dessous du code de classe sans erreur et avec la méthode récursive:
public class PrintIntegers {
public static void PrintIntegersAscendingOrder(int n) {
if (n > 0) {
PrintIntegersAscendingOrder(n - 1);
System.out.printf("%d\n", n);
}
}
public static void main (String args[]) {
PrintIntegersAscendingOrder(5);
}
}
Le comptoir défait le but de la récursivité ici
Ulvi Bajarani - Si l'une des réponses résolvait votre problème, vous pouvez aider la communauté en le marquant comme accepté. Une réponse acceptée aide les futurs visiteurs à utiliser la solution avec impatience. Vérifiez meta.stackexchange.com/questions / 5234 / ... pour apprendre à le faire.