İç İçe Döngüler
Coddy'nin Rust Journey'sinin Fundamentals bölümünün bir parçası — ders 41 / 75.
İç içe geçmiş bir döngü (nested loop), basitçe başka bir döngünün içindeki bir döngüdür. İç döngü, dış döngünün her bir iterasyonu için tüm iterasyonlarını tamamlayacaktır. Bunun için iyi bir benzetme saattir: her bir saat (dış döngü) için, yelkovan (iç döngü) 60 dakikalık tam döngüsünü tamamlamalıdır.
İç içe döngü örneği:
for x in 0..2 {
for y in 0..2 {
println!("{} {}", x, y);
}
}
// Bu şunları çıktı olarak verecektir:
// 0 0
// 0 1
// 1 0
// 1 1Dış döngü (x) iki kez çalışır ve bu seferlerin her birinde iç döngü (y) iki kez çalışır.
Görev
Başlangıç1 ile n - 1 arasındaki sayıları kullanarak, toplamları n eden tüm sayı üçlülerini bulan bir program yazın. Program, ilk sayının ikinci sayıya eşit veya ondan küçük olduğu ve ikinci sayının üçüncü sayıya eşit veya ondan küçük olduğu (yani azalan olmayan sırada) tüm olası kombinasyonları göstermelidir. Bu, aynı sayı kümesini temsil eden "1 2 7" ve "2 1 7" gibi yinelenen üçlülerin oluşmamasını sağlar.
Örneğin, eğer n = 10 ise, çıktı şu şekilde olmalıdır:
1 1 8
1 2 7
1 3 6
1 4 5
2 2 6
2 3 5
2 4 4
3 3 4Çünkü:
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 = 10Yazdırma sırası: Üçlüler artan sırada yazdırılmalıdır. İlk sayı en küçükten en büyüğe doğru ilerlemeli ve her ilk sayı için ikinci sayı, a ≤ b ≤ c kuralını sağlayacak şekilde ilk sayıdan başlayarak maksimum geçerli değere kadar ilerlemelidir.
Kopya kağıdı
İç içe döngü, başka bir döngünün içindeki bir döngüdür. İçteki döngü, dıştaki döngünün her bir iterasyonu için tüm iterasyonlarını tamamlar.
Temel iç içe döngü yapısı:
for x in 0..2 {
for y in 0..2 {
println!("{} {}", x, y);
}
}
// Çıktı:
// 0 0
// 0 1
// 1 0
// 1 1Dıştaki döngü tamamen çalışır ve dıştaki döngünün her bir iterasyonu için içteki döngü kendi tam döngüsünü gerçekleştirir.
Kendin dene
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let n: i32 = input.trim().parse().unwrap();
// Kodunuzu aşağıya yazın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fundamentals bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüAritmetik KısayollarKarşılaştırma OperatörleriString Karşılaştırma7Temel Girdi-Çıktı
Konsola YazdırmaKullanıcı Girdisi OkumaÖzet - 120'ye KadarÖzet - Doğru veya Yanlış5Operatörler Bölüm 2
Mantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Özet - Basit MantıkMantıksal Operatörler Bölüm 311Fonksiyonlar
Fonksiyon TanımlamaParametreler ve ArgümanlarDönüş DeğerleriBirden Fazla Dönüş DeğeriÖzet - Sigma FonksiyonuÖzet - Doğrulama Fonksiyonu14Diziler Üzerinde Gezinme
Range RehberiGelişmiş For DöngüsüDöngü İçinde Ödünç AlmaYaygın Dizi İşlemleri3Değişkenler Bölüm 2
Tür Bildirimiİsimlendirme KurallarıTür ÇıkarımıÖzet - Değişkenleri BaşlatmaTür Dönüştürme9Döngüler
Seriler Üzerinde ForWhile DöngüsüBreakContinueİç İçe DöngülerDöngü EtiketleriSonsuz DöngüÖzet - Dinamik Girdi