You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中使用While函数实现斐波那契数列的问题求助

用While循环生成≤4000000的斐波那契数列并计算偶数项之和

我来帮你搞定这个问题!你目前用固定长度的for循环生成斐波那契数列的方式,没法自动停在≤4000000的项上——这刚好是while循环的强项,它能根据动态条件控制循环的停止时机,完全适配你不确定迭代次数的场景。

问题分析

你原代码里固定了生成34项,但第34项斐波那契数是5702887,已经超过了4000000的上限,导致结果里混入了不符合要求的项。而while循环可以让我们在每一步判断下一项是否符合条件,符合就继续,不符合就停止。

完整解决方案代码

# 初始化前两项斐波那契数
a <- 1
b <- 1
fib_sequence <- c(a, b)

# 使用while循环生成所有≤4000000的斐波那契数
while (TRUE) {
  next_fib <- a + b
  # 如果下一项超过上限,直接跳出循环
  if (next_fib > 4000000) {
    break
  }
  # 将符合条件的项加入数列
  fib_sequence <- c(fib_sequence, next_fib)
  # 更新前两项,为下一次计算做准备
  a <- b
  b <- next_fib
}

# 筛选数列中的偶数项
even_fibs <- fib_sequence[fib_sequence %% 2 == 0]
# 计算偶数项的总和
total_sum <- sum(even_fibs)

# 输出结果
cat("符合条件的斐波那契数列:", fib_sequence, "\n")
cat("其中偶数项的和:", total_sum, "\n")

代码解释

  1. 初始化变量:先定义前两项斐波那契数a和b,并把它们存入结果向量fib_sequence。
  2. While循环逻辑:
    • 每次计算下一项next_fib = a + b
    • 判断如果next_fib超过4000000,就用break跳出循环
    • 如果符合条件,就把它加入结果向量,然后更新a和b的值(让a变成原来的b,b变成刚计算的next_fib)
  3. 筛选与求和:用取模运算%% 2 == 0筛选出偶数项,再用sum()计算它们的总和。

这样生成的数列只会包含≤4000000的项,完全符合你的需求,而且完美利用了while循环的条件驱动特性。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:29:36