我尝试使用while循环编写Fibonacci系列的代码。我写了以下代码
after editing to 46
f=[1,1]; %Valid till 44 terms, for larger numbers this method can't be used
i=3;
while i<45
fNew=f(i-1)+f(i-2);
f=[f,fNew];
i=i+1;
end
最多45个数字,它工作正常。如果我在上面的代码中写入46而不是45,我得到随机零(数量约为40),然后是一些随机数。为什么会这样?
答案 0 :(得分:2)
Fibonacci行的计算没有问题。你只是误解了它的图形表示。
如果打印矩阵,则应始终检查开始时的倍增因子。请注意1e+9 * 0.0000 != 0
,但1e+9 * 0.0000 < 1e+5
默认情况下,matlab不会以完整分辨率打印结果。您可以使用format
命令更改此设置,例如:
format longg
另外,您可以使用注释中建议的指定格式打印矩阵:
fprintf('%i\n',f)
或者您可以向量中提出一个元素:
f(1) % will return allways 1
请注意,默认情况下,Matlab会尝试对打印矩阵中的所有元素使用通用比例因子,这可能不适合所有元素。