Menu
Coddy logo textTech

repeat und break

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 49 von 64.

repeat führt seinen Rumpf immer wieder aus, bis ein darin enthaltenes break die Schleife beendet. Es eignet sich für eine Schleife, deren Abbruchbedingung erst in der Mitte des Rumpfs bekannt ist:

n <- 1
repeat {
  n <- n * 2
  if (n > 50) break
}
print(n)

Ausgabe:

[1] 64

Die Collatz-Folge ist ein Beispiel: Halbiere gerade Zahlen, wandle ungerade Zahlen in 3n + 1 um und stoppe bei 1. Die Anzahl der Schritte ist nicht im Voraus bekannt:

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)

Ausgabe:

[1] 8

next überspringt den Rest der aktuellen Iteration und startet die nächste. Es funktioniert in repeat-, while- und for-Schleifen:

for (x in 1:8) {
  if (x %% 3 == 0) next
  cat(x, "")
}
cat("\n")

Ausgabe:

1 2 4 5 7 8 

Eine repeat-Schleife ohne ein erreichbares break endet nie. Verwende einen Zähler als Sicherheitsgrenze, wenn der Ausstieg von den Daten abhängt:

total <- 0
tries <- 0
repeat {
  tries <- tries + 1
  total <- total + tries
  if (total >= 20 || tries == 100) break
}
print(c(tries, total))

Ausgabe:

[1]  6 21
challenge icon

Aufgabe

Einfach

Vervollständige digital_root(n). Ersetze n durch die Summe seiner Ziffern, bis eine Ziffer übrig bleibt, und gib <result> after <steps> steps zurück: 9875 ergibt 2 after 3 steps (9875, 29, 11, 2). Eine Zahl, die bereits aus einer Ziffer besteht, benötigt 0 Schritte.

sum(as.numeric(strsplit(as.character(n), "")[[1]])) addiert die Ziffern von n.

Der bereitgestellte Code liest n ein und gibt den zurückgegebenen Wert aus.

Probier es selbst

digital_root <- function(n) {
  # Schreibe deinen Code hier
  ""
}

# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn unverändert
input <- suppressWarnings(readLines(file("stdin")))
cat(digital_root(as.numeric(input[1])), sep = "\n")
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler