R中小于1000的斐波那契数列
Fibonacci sequence less than 1000 in R
我正在尝试使用 R 中的 while 循环打印小于 1000 的斐波那契数列。
到目前为止,
fib <- c(1,1)
counter <-3
while (fib[counter-1]<1000){
fib[counter]<- fib[counter-2]+fib[counter-1]
counter = counter+1
}
fib
我有这个代码。仅给出前两个数字:1,1。这是打印:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
如何修复我的代码以仅打印少于 1000 个?
你的方法的问题是当 while
循环中的条件 (fib[counter-1]<1000
) 是 FALSE
你已经在 fib
中添加了大于1000.
您可以 return fib[-length(fib)]
删除最后一个号码或在将号码插入 fib
之前检查号码。
fib <- c(1,1)
counter <-3
while (TRUE){
temp <- fib[counter-2] + fib[counter-1]
if(temp < 1000)
fib[counter] <- temp
else
break
counter = counter+1
}
fib
#[1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
您可以更改 while
条件以对最后 2 个答案求和,而不仅仅是最后一个:
fib <- c(1,1)
counter <-3
while (sum(fib[counter - 1:2]) < 1000){
fib[counter]<- fib[counter-2]+fib[counter-1]
counter = counter+1
}
fib
#> [1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
或者完全摆脱 counter
:
fib <- c(1,1)
while (sum(fib[length(fib) - 0:1]) < 1000) fib <- c(fib, sum(fib[length(fib) - 0:1]))
fib
#> [1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
不是检查最后一个元素 wrt 1000 的值,对于预期的输出,您应该检查最后两个元素的总和。
fib <- c(1,1)
counter <-3
while (fib[counter-2]+fib[counter - 1]<1000){
fib[counter]<- fib[counter-2]+fib[counter-1]
counter = counter+1
}
fib
我正在尝试使用 R 中的 while 循环打印小于 1000 的斐波那契数列。
到目前为止,
fib <- c(1,1) counter <-3 while (fib[counter-1]<1000){ fib[counter]<- fib[counter-2]+fib[counter-1] counter = counter+1 } fib
我有这个代码。仅给出前两个数字:1,1。这是打印:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
如何修复我的代码以仅打印少于 1000 个?
你的方法的问题是当 while
循环中的条件 (fib[counter-1]<1000
) 是 FALSE
你已经在 fib
中添加了大于1000.
您可以 return fib[-length(fib)]
删除最后一个号码或在将号码插入 fib
之前检查号码。
fib <- c(1,1)
counter <-3
while (TRUE){
temp <- fib[counter-2] + fib[counter-1]
if(temp < 1000)
fib[counter] <- temp
else
break
counter = counter+1
}
fib
#[1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
您可以更改 while
条件以对最后 2 个答案求和,而不仅仅是最后一个:
fib <- c(1,1)
counter <-3
while (sum(fib[counter - 1:2]) < 1000){
fib[counter]<- fib[counter-2]+fib[counter-1]
counter = counter+1
}
fib
#> [1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
或者完全摆脱 counter
:
fib <- c(1,1)
while (sum(fib[length(fib) - 0:1]) < 1000) fib <- c(fib, sum(fib[length(fib) - 0:1]))
fib
#> [1] 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
不是检查最后一个元素 wrt 1000 的值,对于预期的输出,您应该检查最后两个元素的总和。
fib <- c(1,1)
counter <-3
while (fib[counter-2]+fib[counter - 1]<1000){
fib[counter]<- fib[counter-2]+fib[counter-1]
counter = counter+1
}
fib