0
votes

Imprimer des entiers dans l'ordre croissant de récursivité

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);
    }
}


2 commentaires

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.


3 Réponses :


1
votes

le faire comme suit: xxx

sortie: xxx

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:

  1. Quand arrêter l'appel récursif
  2. traitement avant de faire l'appel récursif
  3. traitement avant de faire l'appel récursif

    puisque vous diminuez déjà le paramètre par 1 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 ).


1 commentaires

Veuillez mentionner ce qui n'allait pas dans le code et comment ces solutions contribuent.



3
votes

Vous pouvez le faire comme ceci: xxx

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.

remarque le si (i <1) {retour; {retour;} ligne, cela met fin à l'appel (s) de méthode de récursif.

Cet article devrait aider Vous Mise en route avec la récursion


0 commentaires

0
votes

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);
    }
}


0 commentaires