我正在尝试计算斐波那契数列,直到小于4*10^6
的项为止。一开始不知道何时停止时,如何定义f
数组的尺寸?在这种情况下,我通过反复试验f = [1:32;]
进行了定义。
k = 32
f = [1:k;]
for i in 1:k
if i < 3
f[i] = i
elseif f[i] < 4*10^6
f[i] = f[i-1] + f[i-2]
else
break
end
end
答案 0 :(得分:2)
您不必预先定义它。
只需使用push!
:
f = [1, 2]
while true
fi = f[end] + f[end-1]
fi < 4*10^6 ? push!(f, fi) : break
end
旁注:对于斐波那契数列,使用四舍五入部分的Wikipedia中给出的公式来计算k
相对容易。同样,通常您将f[2]
定义为等于1
,而不是问题中的2
。