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

Julia循环未终止:斐波那契数列超出阈值问题求助

问题原因分析

你的问题出在循环逻辑的顺序上:当前的while判断的是当前的fib_2是否≤4000000,满足条件后直接计算下一个斐波那契数并推入数组,但这个新生成的next_fib并没有经过判断就被添加,导致最后一次循环时,虽然fib_2=3524578符合条件,但生成的next_fib=5702887已经超过阈值,却依然被加入数组。

修正方案

方案一:推入前判断新生成的数

在push!之前先检查next_fib是否符合要求,只有满足条件才添加到数组:

F = Int[]  # 指定数组类型为Int,比Any类型更高效
fib_1 = 0
fib_2 = 1

push!(F, fib_1, fib_2)

while fib_2 <= 4000000
  next_fib = fib_2 + fib_1
  if next_fib <= 4000000
    push!(F, next_fib)
  end
  fib_1 = fib_2
  fib_2 = next_fib
end
println(F)

方案二:调整循环结构(更简洁)

先将符合条件的数推入数组,再更新斐波那契值,从根源避免超阈值数被添加:

F = Int[]
fib_1 = 0
fib_2 = 1

push!(F, fib_1)
while fib_2 <= 4000000
  push!(F, fib_2)
  fib_1, fib_2 = fib_2, fib_1 + fib_2
end
println(F)

额外优化提示

原代码中F = []会创建Any类型的数组,Julia作为静态类型语言,指定具体类型(比如Int[])能显著提升运行性能,建议养成这个编码习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:07:40