repeat dan break
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 49 dari 64.
repeat menjalankan isi perulangan berulang kali sampai break di dalamnya menghentikan perulangan. Ini cocok untuk perulangan yang kondisi keluarnya baru diketahui di tengah isi perulangan:
n <- 1
repeat {
n <- n * 2
if (n > 50) break
}
print(n)Output:
[1] 64Urutan Collatz adalah salah satu contoh: bagi dua bilangan genap, ubah bilangan ganjil menjadi 3n + 1, lalu berhenti pada 1. Jumlah langkahnya tidak diketahui sebelumnya:
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)Output:
[1] 8next melewati sisa iterasi saat ini dan memulai iterasi berikutnya. Ini berfungsi dalam perulangan repeat, while, dan for:
for (x in 1:8) {
if (x %% 3 == 0) next
cat(x, "")
}
cat("\n")Output:
1 2 4 5 7 8 Perulangan repeat tanpa break yang dapat dijangkau tidak pernah berakhir. Gunakan penghitung sebagai batas pengaman saat kondisi keluar bergantung pada data:
total <- 0
tries <- 0
repeat {
tries <- tries + 1
total <- total + tries
if (total >= 20 || tries == 100) break
}
print(c(tries, total))Output:
[1] 6 21Tantangan
MudahLengkapi digital_root(n). Ganti n dengan jumlah digit-digitnya sampai tersisa satu digit, lalu kembalikan <result> after <steps> steps: 9875 menghasilkan 2 after 3 steps (9875, 29, 11, 2). Angka yang sudah terdiri dari satu digit memerlukan 0 langkah.
sum(as.numeric(strsplit(as.character(n), "")[[1]])) menjumlahkan digit-digit dari n.
Kode yang disediakan membaca n dan mencetak nilai yang dikembalikan.
Coba sendiri
digital_root <- function(n) {
# Tulis kodemu di sini
""
}
# Kode input/output yang disediakan: biarkan seperti semula
input <- suppressWarnings(readLines(file("stdin")))
cat(digital_root(as.numeric(input[1])), sep = "\n")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk10Alur Kontrol Lanjutan
Fungsi switch()ifelse() dengan operasi vektorrepeat dan breakFungsi RekursifRekap: Pengklasifikasi Nilai2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online