repeat ve break
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 49 / 64.
repeat, içindeki bir break döngüyü durdurana kadar gövdesini tekrar tekrar çalıştırır. Çıkış koşulunun yalnızca gövdenin ortasında bilindiği döngüler için uygundur:
n <- 1
repeat {
n <- n * 2
if (n > 50) break
}
print(n)Çıktı:
[1] 64Collatz dizisi bir örnektir: çift sayıları ikiye bölün, tek sayıları 3n + 1 değerine dönüştürün ve 1'de durun. Adım sayısı önceden bilinmez:
n <- 6
steps <- 0
repeat {
if (n == 1) break
n <- if (n %% 2 == 0) n / 2 else 3 * n + 1
steps <- steps + 1
}
print(steps)Çıktı:
[1] 8next geçerli yinelemenin geri kalanını atlar ve bir sonrakini başlatır. repeat, while ve for döngülerinde çalışır:
for (x in 1:8) {
if (x %% 3 == 0) next
cat(x, "")
}
cat("\n")Çıktı:
1 2 4 5 7 8 Ulaşılabilir bir break içermeyen bir repeat döngüsü asla sona ermez. Çıkış verilere bağlı olduğunda güvenlik sınırı olarak bir sayaç tutun:
total <- 0
tries <- 0
repeat {
tries <- tries + 1
total <- total + tries
if (total >= 20 || tries == 100) break
}
print(c(tries, total))Çıktı:
[1] 6 21Görev
Kolaydigital_root(n) fonksiyonunu tamamla. Tek basamak kalana kadar n değerini basamaklarının toplamıyla değiştir ve <result> after <steps> steps döndür: 9875 değeri 2 after 3 steps verir (9875, 29, 11, 2). Zaten tek basamaklı olan bir sayı 0 adım sürer.
sum(as.numeric(strsplit(as.character(n), "")[[1]])), n değerinin basamaklarını toplar.
Sağlanan kod n değerini okur ve döndürülen değeri yazdırır.
Kendin dene
digital_root <- function(n) {
# Kodunuzu buraya yazın
""
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(digital_root(as.numeric(input[1])), sep = "\n")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı10İleri Düzey Kontrol Akışı
switch() FonksiyonuVektörleştirilmiş ifelse()repeat ve breakÖzyinelemeli FonksiyonlarTekrar - Not Sınıflandırıcısı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi