我現在面臨的問題與這個簡單的斐波那契數生成程序:停止的輸出爲週期在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