[Java] Essayez de résoudre le problème de Fizz Buzz en utilisant un traitement récursif
introduction
- Après avoir publié "[Java] Essayez de résoudre le problème de Fizz Buzz" auparavant, je me demandais si je pourrais écrire quelque chose de différent.
- En me concentrant sur le fait que "le nombre de jugements augmente de 1", j'ai pensé que le traitement récursif pouvait être utilisé, alors j'ai essayé.
Code créé
- La première branche conditionnelle, ʻif (end> 1) {...}
, empêche tout traitement récursif supplémentaire lorsque ʻend == 1
.
- Il est conforme à la règle de FizzBuzz que "le premier joueur lit le nombre" 1 "".
FizzBuzz2.java
/**
*Une méthode qui utilise un traitement récursif.
* @param end Le nombre pour terminer FizzBuzz.
*/
public static void useRecursion(int end) {
if (end > 1) {
useRecursion(end - 1);
}
if (end%3==0 && end%5==0) {
System.out.println("Fizz Buzz");
} else if (end%3==0) {
System.out.println("Fizz");
} else if (end%5==0) {
System.out.println("Buzz");
} else {
System.out.println(end);
}
}
Résultat de l'exécution (* Quand 20 est spécifié dans l'argument end)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Résumé
- J'ai pu résoudre le problème FizzBuzz en utilisant un traitement récursif.
- Cependant, si l'argument ʻend` devient grand, le nombre d'appels de traitements récursifs (fonction récursive) augmente également, donc il y a un risque de débordement de pile.