【发布时间】:2018-07-11 23:43:55
【问题描述】:
我是一个新的 R 用户,编程经验非常有限,因此我的问题和代码写得不好。
我被分配了一个问题,我必须使用 while 循环来生成小于 4,000,000 的斐波那契数列的数字(斐波那契数列的特点是,前两个之后的每个数字都是前两个)。
接下来,我必须计算生成的序列中偶数的总和。
我的回复很成功,但是,我认为代码写得不是很好。我可以做得更好吗?
> x <- 0
> y <- 1
> z <- 0
if (x == 0 & y == 1) {
cat(x)
cat(" ")
cat(y)
cat(" ")
while (x < 4000000 & y < 4000000) {
x <- x + y
cat(x)
cat(" ")
if (x %% 2 == 0) {
z <- x + z
}
y <- x + y
cat(y)
cat(" ")
if (y %% 2 == 0) {
z <- y + z
}
}
}
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 P>
cat(z)
4613732
【问题讨论】:
-
@Terru_theTerror -- 该帖子与您声称重复的帖子无关。您链接的帖子是关于获得非常大的斐波那契数的不准确结果。这篇文章的准确性没有问题,甚至没有尝试达到几乎那么大的数字;他们只是在寻找对他们(已经有效且准确的)代码的改进。
-
您可以使用 cat(x," ") 减少代码中“cat”的数量。
标签: r