I want to produce the nth term of the Fibonacci Sequence, however I keep getting the error, "Attempted to access fibonacci(4); index out of bounds because numel(fibonacci)=3." So far I have the following code:
function f = fibonacci(n)
fibonacci(1) = 1;
fibonacci(2) = 1;
fibonacci(3) = 2;
i = 3;
n = 1000000000000;
while (i <= n)
f = fibonacci(i-1) + fibonacci(i-2);
i = i + 1;
end
end

댓글 수: 1

function f = fibonacci(nmax)
f=zeros(nmax,1);
f(1) = 0;
f(2) = 1;
f(3) = 1;
i = 3;
while (i <= nmax)
f(i) =f(i-1) + f(i-2);
i = i + 1;
end
end

댓글을 달려면 로그인하십시오.

 채택된 답변

James Tursa
James Tursa 2015년 3월 9일
편집: James Tursa 2015년 3월 9일

0 개 추천

You don't assign your iterative result to the fibonacci array. E.g.:
fibonacci(i) = fibonacci(i-1) + fibonacci(i-2);
HOWEVER, this formulation is increasing the size of the fibonacci variable in a loop, which can have severe timing consequences unless the parser saves you. I would advise that you reformulate your code to pre-allocate this array, or since you don't need to save the array work with only three values at a time ((i-2)'th, (i-1)'th, and i'th) using only three variables (e.g., fibonacci2, fibonacci1, fibonacci0).

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

KB
2015년 3월 9일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by