-2

有一个while循环,这工作正常。但是我还需要添加另一个条件。

我需要循环继续运行,直到它满足 while 循环,但我还需要补充一点,这只能重复 x 次。

我认为您必须创建一个 for 循环才能执行 x 次,是否可以在其中放置一个 while 循环?

基本上我怎样才能使循环达到目标或在 x 循环后停止?

4

2 回答 2

8

中的表达式while必须为 TRUE,循环才能继续。您可以使用|&添加额外的条件。此循环运行 99 次或直到随机变量的总和小于 100。

counter <- 0
result <- 0

while(counter < 100 | sum(result) < 100) {
  result <- sum(result, rnorm(1, mean = 5, sd = 1))
  counter <- sum(counter, 1)
}

> result
[1] 101.5264
> counter
[1] 21
于 2013-04-17T14:25:20.480 回答
1

只需将当前迭代器值作为参数传递给您的函数。这样,如果达到特定值,您就可以中断递归。

但是如果你使用递归,为什么会有一个while循环,例如:

add_one_recursive = function(number) {
   number = number + 1
   cat("New number = ", number, "\n")
   if(number > 10) {
      return(number)
   } else {
      return(add_one_recursive(number))
   }
 }
final_number = add_one_recursive(0) 
New number =  1 
New number =  2 
New number =  3 
New number =  4 
New number =  5 
New number =  6 
New number =  7 
New number =  8 
New number =  9 
New number =  10 
New number =  11 

根本不需要显式循环。

于 2013-04-17T14:29:04.313 回答