[Java] Versuchen Sie, das Fizz Buzz-Problem mithilfe der rekursiven Verarbeitung zu lösen
Einführung
- Nachdem ich zuvor "[Java] Versuchen Sie, das Fizz Buzz-Problem zu lösen" gepostet hatte, fragte ich mich, ob ich etwas anderes schreiben könnte.
- Als ich mich auf den Punkt konzentrierte, dass "die Anzahl der Urteile um 1 zunimmt", dachte ich, dass rekursive Verarbeitung verwendet werden könnte, also versuchte ich es.
Code erstellt
- Der erste bedingte Zweig "if (end> 1) {...}" verhindert eine weitere rekursive Verarbeitung, wenn "end == 1".
- Es entspricht der FizzBuzz-Regel, dass "der erste Spieler die Zahl" 1 "vorliest".
FizzBuzz2.java
/**
*Eine Methode, die rekursive Verarbeitung verwendet.
* @param end Die Nummer zum Beenden von 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);
}
}
Ausführungsergebnis (* Wenn am Ende des Arguments 20 angegeben ist)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Zusammenfassung
- Ich konnte das FizzBuzz-Problem durch rekursive Verarbeitung lösen.
- Wenn das Argument "Ende" jedoch groß wird, erhöht sich auch die Anzahl der Aufrufe der rekursiven Verarbeitung (rekursive Funktion), sodass die Gefahr eines Stapelüberlaufs besteht.