Menu
CoddyTech

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] 64

Urutan 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] 8

next 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 21
challenge icon

Tantangan

Mudah

Lengkapi 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")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online