-1
votes

Comment puis-je créer un code qui répertorie une chaîne de factorielles en utilisant uniquement une boucle for?

Je suis relativement nouveau sur Java, car j'étudie actuellement comment utiliser les boucles for. Comment coder une chaîne de factorielles consécutives en utilisant strictement une boucle for? Par exemple, je veux coder jusqu'à 5 factorielles dans une seule chaîne - mon problème est que mon code n'imprime qu'une seule factorielle.

Contribution:

    int b = 1;
    int a = 1;
    for(int c = 1; c <= b; c++)
    {
        a = a * c;
    }
    System.out.print(a);
}

Résultats attendus: 1 2 6 24120


1 commentaires

Si vous souhaitez imprimer plusieurs fois, pourquoi votre instruction d'impression est-elle en dehors de la boucle for ?


3 Réponses :


0
votes

vous devez mettre l'instruction print dans la boucle for.

int b = 5;
int a = 1;
for (int c = 1; c <= b; c++) {
    a = a * c;
    System.out.print(a + " ");
}


0 commentaires

0
votes

Pour imprimer chaque factorielle telle qu'elle est calculée, déplacez l'instruction d'impression à l'intérieur de la boucle:

StringBuilder result = new StringBuilder();
for(int c = 1; c <= b; c++) {
    a = a * c;
    result.append(" ");
    result.append(a);
}
System.out.println(result.toString().trim());

Pour tout imprimer à la fin, accumulez le résultat et imprimez-le à la fin:

for(int c = 1; c <= b; c++) {
    a = a * c;
    System.out.print(a);
}


0 commentaires

1
votes

Si vous voulez imprimer des factorielles de 1 à n non. , alors il est évident que vous auriez besoin d'itérer chacun de ces non. et puis pour chacun de ces non. vous pouvez appeler une fonction distincte qui calculera sa factorielle. De cette façon, le code sera plus simple et modulaire.

ici n = 5

void findFactorial(int n){
    int fact=1;
    StringBuilder sb = new StringBuilder();
    sb.append(1+" ");
    for(int i=2;i<=n;i++){
       fact=fact*i;
       sb.append(fact+" ");
    }
    System.out.println(sb.toString());
}

et si vous avez besoin de stocker le résultat dans une chaîne, au lieu de l'imprimer directement là-bas, utilisez String Builder comme ci-dessous et ajoutez un espace vide qui convertira un entier retourné en chaîne plus introduira un espace entre chaque résultat factoriel.

StringBuilder sb = new StringBuilder();
for(int i=1;i<=n:i++) {
    sb.append(findFactorialOfI(i)+” “);
}
System.out.println(sb.toString());

Une autre solution -

Puisque nous imprimons des factorielles de nombres consécutifs de 1 à n. Cela pourrait être fait en une seule boucle for.

void findFactorials(int n){
     for(int i=1;i<=n:i++) {
          System.out.println(findFactorialOfI(i)+” “)
     }
}
int findFactorialOfI(int x){
     int fact=1;
     for(int i=x:i>=1;i—){
         fact=fact*i:
     }
     return fact;
}


0 commentaires