是否可以在 while 函数中使用向量索引?

is it possible to use vector index in while function?

所以我正在尝试创建一个斐波那契数列,我发现以下语法有效

x <- 0
y <- 1
fib <- c()

while (x < 4000000 & y < 4000000){
  x <- x + y
  y <- x + y
  fib <- c(fib, x, y)
}

但是,只要在计算中使用的 xy 的值不超过 4,000,000,此语法只会创建向量。是否可以使 while 引用“如果向量 fib 的元素小于 100”?

提前致谢

只需在 while 循环中定义另一个变量,并将其增加 fib,

的长度
x <- 0
y <- 1
mylen <- 0 # new variable 

fib <- c()

while (mylen<100){

  x <- x + y

  y <- x + y

  fib = c(fib, x, y)

  mylen <- length(fib)

}

这里有另一种写代码的方法-

fib <- numeric(100)
fib[1] <- 0
fib[2] <- 1
i <- 2
while (i < 100){
  i = i + 1
  fib[i] = fib[i-1] + fib[i-2]
}

在循环中增长向量 (fib = c(fib, x, y)) 效率低下,因此我创建了一个固定长度 (100) 的向量,然后为其赋值。这也避免了创建不必要的临时变量 xy.

对您的代码进行非常细微的更改,使用 length() 函数在 while 循环的每次迭代之前检查 fib 的长度(元素数量)。

while(length(fib)<100){....}

这样您就可以避免像在其他答案中那样创建另一个变量来计算迭代次数。

对于它的价值,这就是我的做法 - for 循环更合适,因为你有一定的迭代次数

n <- 100
fib <- c(0,1)

for(i in 3:n){
  fib[i] <- fib[i-2] + fib[i-1]
}