2010-11-02 3 views
1

Si le numéro 5 nous est donné, il doit être imprimé sur la console comme 1, 2, 3, 4, 5. Cela doit être fait récursivement. (Java de préférence)Impression de numéro récursive

Dans le cas où quelqu'un se demande ce ne sont pas des questions de devoirs. Je m'entraîne pour la mi-session d'ici une semaine.

Désolé de ne pas poster mon travail. Je faisais quelque chose comme ce qui suit: mais je ne comprends pas où imprimer le reste du nombre, et comment arrêter d'appeler récursivement la méthode avec (n - 1). Jacob avec son poste m'a aidé. Merci à tous ceux qui ont aidé.

public void writeNums(int n) { 
    if (n < 1) 
     throw new IllegalArgumentException(); 
    if (n == 1) { 
     System.out.print("1, "); 
    } 
    writeNums(n - 1); 
+2

Il serait un meilleur exercice d'apprentissage si vous avez fait une première coupe du code vous-même, et publiés ici si vous avez des questions ... –

+4

Il n'y a pas beaucoup pratique si vous nous demandez d'abord. Jusqu'où avez-vous? À quoi ressemble votre tentative actuelle? – winwaed

+0

Personnellement, je classerais cela comme devoir. Même si, techniquement, il n'y a pas de question spécifique sur les devoirs, il semble y avoir une question d'un article précédent. – Jaydee

Répondre

8

On ne va pas écrire votre code pour vous, mais fonctionne récursion façon est que vous avez une fonction qui appelle elle-même, en passant un paramètre qui change pour chaque appel. Il doit gérer le "cas de base" dans lequel la fonction fait quelque chose mais n'a plus besoin de s'appeler lui-même, et gérer le "cas général" où la fonction fait quelque chose et appelle elle-même pour compléter ce qui doit être fait. Alors:

function printNumbersUpTo(current) 
    if current is 1, print 1 and return. //base case 
    otherwise, call printNumbersUpTo(current - 1), then print current, and return. //general case 
2

permet de démarrer en écrivant une fonction qui ne fait pas beaucoup, mais il est évident pour un certain squelette fonction récursive de base

void Print(int num) 
{ 
    if (num <= 0) 
     return; 

    Print(num - 1); 
} 

Maintenant, essayez de penser où ajouter l'impression atual à la console pour que le numéro apparaisse dans le bon ordre.

1

Si vous eu du mal avec ce problème, vous voulez probablement examiner comment récursivité dans les ouvrages généraux: http://en.wikipedia.org/wiki/Recursion_%28computer_science%29

Pensez à savoir comment traiter le cas de base, et de réfléchir sur la façon dont doit être traité le cas général. Lorsque cela est fait correctement, il peut souvent se sentir remarquablement simple.

0
private static String Print(int num) { 
    if (num <= 1) // base case 
     return Integer.toString(num); 
    else 
     return Print(num - 1) + ", " + num; 
    } 
}