Verschachtelte Schleifen
Teil des Abschnitts Fundamentals der Rust-Journey von Coddy — Lektion 41 von 75.
Eine verschachtelte Schleife ist einfach eine Schleife innerhalb einer anderen Schleife. Die innere Schleife durchläuft alle ihre Iterationen für jede einzelne Iteration der äußeren Schleife. Eine gute Analogie hierfür ist eine Uhr: Für jede Stunde (äußere Schleife) muss der Minutenzeiger (innere Schleife) seinen vollständigen 60-Minuten-Zyklus durchlaufen.
Beispiel für eine verschachtelte Schleife:
for x in 0..2 {
for y in 0..2 {
println!("{} {}", x, y);
}
}
// Dies wird Folgendes ausgeben:
// 0 0
// 0 1
// 1 0
// 1 1Die äußere Schleife (x) läuft zweimal, und bei jedem dieser Durchläufe läuft die innere Schleife (y) zweimal.
Aufgabe
AnfängerSchreiben Sie ein Programm, das alle Zahlentripel findet, die sich zu n addieren, wobei Zahlen von 1 bis n - 1 verwendet werden. Das Programm sollte alle möglichen Kombinationen anzeigen, bei denen die erste Zahl kleiner oder gleich der zweiten Zahl ist und die zweite Zahl kleiner oder gleich der dritten Zahl ist (d. h. in nicht absteigender Reihenfolge). Dies stellt sicher, dass wir keine doppelten Tripel wie "1 2 7" und "2 1 7" haben, die denselben Zahlensatz darstellen.
Wenn zum Beispiel n = 10 ist, sollte die Ausgabe wie folgt aussehen:
1 1 8
1 2 7
1 3 6
1 4 5
2 2 6
2 3 5
2 4 4
3 3 4Weil:
1 + 1 + 8 = 10
1 + 2 + 7 = 10
1 + 3 + 6 = 10
1 + 4 + 5 = 10
2 + 2 + 6 = 10
2 + 3 + 5 = 10
2 + 4 + 4 = 10
3 + 3 + 4 = 10Reihenfolge der Ausgabe: Die Tripel sollten in aufsteigender Reihenfolge ausgegeben werden. Die erste Zahl sollte vom kleinsten zum größten Wert iterieren, und für jede erste Zahl sollte die zweite Zahl von der ersten Zahl bis zum maximal gültigen Wert iterieren, um sicherzustellen, dass a ≤ b ≤ c gilt.
Spickzettel
Eine verschachtelte Schleife ist eine Schleife innerhalb einer anderen Schleife. Die innere Schleife schließt alle ihre Iterationen für jede einzelne Iteration der äußeren Schleife ab.
Grundlegende Struktur einer verschachtelten Schleife:
for x in 0..2 {
for y in 0..2 {
println!("{} {}", x, y);
}
}
// Ausgabe:
// 0 0
// 0 1
// 1 0
// 1 1Die äußere Schleife läuft vollständig durch, und für jede Iteration der äußeren Schleife durchläuft die innere Schleife ihren vollständigen Zyklus.
Probier es selbst
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let n: i32 = input.trim().parse().unwrap();
// Schreibe deinen Code unten
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Fundamentals
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenVergleichsoperatorenString-Vergleich7Grundlagen IO
Ausgabe in die KonsoleBenutzereingaben lesenWiederholung - Bis 120Wiederholung - Wahr oder Falsch5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung - Einfache LogikLogische Operatoren Teil 311Funktionen
Funktionen deklarierenParameter und ArgumenteRückgabewerteMehrere RückgabewerteWiederholung - Sigma-FunktionWiederholung - Validierungsfunktion14Iterieren über Arrays
Range-LeitfadenErweiterte For-SchleifeBorrowing in SchleifenGängige Array-Operationen3Variablen Teil 2
TypdeklarationNamenskonventionenTypinferenzRückblick - Variablen initialisierenTypumwandlung6Entscheidungsfindung
If-AusdrückeIf-ElseMatch-AnweisungZusammenfassung - If-ElseVerschachteltes If-Else9Schleifen
For-Schleife über SerienWhile-SchleifeBreakContinueVerschachtelte SchleifenSchleifen-LabelsEndlosschleifeRückblick – Dynamische Eingabe