【发布时间】:2018-03-19 11:00:22
【问题描述】:
帮助 octave / matlab 中的斐波那契函数。 斐波那契模式是http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibtable.html
0 : 0
1 : 1
2 : 1
3 : 2
4 : 3
5 : 5
我的函数可以工作,但它跳过了one 我该如何解决这个问题,以便函数正确地遵循上面的列表?以下是我的函数创建的内容。
0 : 0
1 : 1
2 : 2
3 : 3
4 : 5
5 : 8
见下面的功能
function f = rtfib(n)
if n<0
multi=-1; %if neg number store neg in multi variable
n=abs(n); %if neg make pos
else
multi=1;
end
if (n == 0)
f = 0;
elseif (n==1)
f=1;
elseif (n == 2)
f = 2;
else
fOld = 2;
fOlder = 1;
for i = 3 : n
f = fOld + fOlder;
fOlder = fOld;
fOld = f;
end
end
f=f*multi; %put sign back
end
Ps:我使用的是 octave 4.0,类似于 matlab
原始代码来自 Create faster Fibonacci function for n > 100 in MATLAB / octave
【问题讨论】:
-
您明确写了:
if (n==2) f=2,但问我们如何制作f=1,以防n==2?这是你的代码吗? -
@AnderBiguri 我最初的问题是处理速度并想改变它以遵循正确的模式。 stackoverflow.com/questions/26829209/…