【发布时间】:2014-10-14 12:06:09
【问题描述】:
我正在创建向量的比较以检查它是否属于斐波那契数列。
function f = fibo(n)
f(1)=7;
f(2)=9;
k=3:5;
f(k)=f(k-1)+f(k-2)
ans=isequal(n,f)
输出显示
f =
7 9 16 9 0
而不是
7 9 16 25 41
如何向量化这部分代码?
if n == 1,
f = 1; % First element is 1.
return;
elseif n == 2
f = [1 1]; % First two elements are 1.
else
% Call fibrec with previous result and compute next one from it.
fm1 = fibrec(n-1);
f = [fm1 fm1(end)+fm1(end-1)];
end
【问题讨论】:
-
我没有显示比较向量,因为它是一个输入函数。我的错误在于这里给出的公式。我需要更正这个公式以获得精确的向量 7 9 16 25 41
-
我知道当 k = 3, i(1), i(2) 被考虑在内,但是当 k = 4, k = 5 它不会加起来之前的 i(k-1 ) + i(k-2)
-
按原样,您的代码返回错误:
Index exceeds matrix dimensions.您是否在问题中发布的代码之前将i初始化为向量?请始终发布minimal, complete, verifiable example。 -
是的。我确实初始化了
-
除了@Jubobs 所说的,返回值
f从未在您的函数中赋值。