我正在尝试编写MatLab函数来计算Fibonacci数。下面是我所拥有的,但它出现了关于F(0)
的错误。
??? Attempted to access F(0); index must be a positive integer or logical.
Error in ==> fibonacci at 11
F(0) = 0;
如何告诉matlab数组中的前两个值是0和1 ??
function F = fibonacci( n )
%A fibonacci sequence is where the next term in the series is given by the
%sum of the pervious two terms
%Only valid if n is greater than or equal to 2
if n >= 2 ;
%Make an array with n terms
F = zeros (1,n);
%run a for loop from 2 to n
for i = 2:n;
F(0) = 0;
F(1) = 1;
F(i) = F(i-1) + F(i-2)
end
end
end
答案 0 :(得分:1)
您的格式有点偏,但似乎您要为数组的零索引赋值。据我所知,MatLab使用1作为数组中第一项的索引。
如果您将if n>=2
更改为if >=3
并设置1和2索引项而不是0和1项,那么您应该可以顺利完成。
答案 1 :(得分:0)
MATLAB使用基于1的索引,这意味着您应该通过用n + 1替换n个变量来重写索引以反映这种转变。这使得fibonacci在0处开始,但索引为1,1在2,1,在3,2在4,3,在5,依此类推到你的第n个术语,现在被索引为n + 1。