我现在面临的问题与这个简单的斐波那契数生成程序:停止的输出为周期在MATLAB
function f = fibonr(n)
f(1) = 1;
f(2) = 1;
for i = 3:n
f(i) = f(i-1) + f(i-2);
end
end
如果我想只显示序列的第n个数字,什么样的调整我应该做什么?
我现在面临的问题与这个简单的斐波那契数生成程序:停止的输出为周期在MATLAB
function f = fibonr(n)
f(1) = 1;
f(2) = 1;
for i = 3:n
f(i) = f(i-1) + f(i-2);
end
end
如果我想只显示序列的第n个数字,什么样的调整我应该做什么?
function f = fibonr(n)
f = zeros(n,1); %//initialise the output array
f(1,1) = 1;
f(2,1) = 1;
for ii = 3:n
f(ii,1) = f(ii-1,1) + f(ii-2,1);
end
%//create a string with text and variables
str = sprintf('The %d th number in the Fibonacci sequence is %d',n,f(ii,1));
disp(str) %//display your output.
end
首先:don't use i
as a variable。其次,我转向使用列向量,因为MATLAB处理它们的速度更快,并且我初始化了阵列,速度更快(因此闪烁的橙色摆动线位于您的f(i)=
线下方)。
调用你的函数:
output = fibonr(10);
The 10 th number in the Fibonacci sequence is 55
如果使用例如n=20
并且仍然希望第10个参数只需拨打output(10)
如果您想立即指定输出,您可以使用nargin
。如果您拨打fibonr(n)
,此代码将为您提供所有序列,或者您可以指定一个向量来获取所述位置的fibonacy数字。如果你有兴趣在这两个,你指定的输出及所有的号码,你可以调用与功能: [output, fibnumbers] = fibonr(n,v);
function [output,f] = fibonr(n,v)
f(1) = 1;
f(2) = 1;
for i = 3:n
f(i) = f(i-1) + f(i-2);
end
if nargin() > 1
output = f(v);
else
output = f;
end
一旦完成for循环(n次迭代之后)第n号将是最后一个存储在'f'对吗?然后你可以在循环的'end'语句后面显示'f(end)'。这是你的意思吗? –
我照你所说的做了,但在这种情况下,我得到了两个输出:第一个存储了最后一个数字,并且程序的整个向量的回答是 – james42