我正在为一个分析编程课程编写语言,在该课程中,我被要求检查向量中的重复元素。虽然我能够编写逻辑,但我正在尝试在代码中使用“中断”,这样一旦我找到重复的元素,它就不会遍历其余的元素。在我的代码中,我能够跳出“while循环”,但不能“for循环”。我可以使用关于如何添加第二个break的建议,以便计数器在下面的代码中停止在3处,而不会跳回for循环。
x <- c(3, -7, 6, 3, 1, -7)
n <- length(x); n # = 6
counter <- 0
answer <- FALSE
for (i in 1:(n-1)) {
v <- i + 1
while (v <= n) {
counter <- counter + 1
if (x[i] == x[v]) {
answer <- TRUE
break
}
else {
v <- v + 1
}
}
}
answer # = TRUE
counter # = 13, SHOULD BE 3我希望在3个循环中停止,但是我在括号后添加的break没有起作用,所以我只成功地在while循环中添加了break,但它仍然在遍历其余的元素。
发布于 2019-10-06 11:47:27
由于如果while循环未中断,则answer不能为true,因此将answer值检查放在while循环之后,如果answer为true,则中断for循环:
x <- c(3, -7, 6, 3, 1, -7)
n <- length(x); n # = 6
counter <- 0
answer <- FALSE
for (i in 1:(n-1)) {
v <- i + 1
while (v <= n) {
counter <- counter + 1
if (x[i] == x[v]) {
answer <- TRUE
break
}
else {
v <- v + 1
}
} #end while
if(answer == TRUE)
break
} #end for
answer # = TRUE
counter # = 13, SHOULD BE 3https://stackoverflow.com/questions/58254007
复制相似问题