MatLab назначает только первые две переменные в - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь написать функцию MatLab для вычисления чисел Фибоначчи.ниже есть то, что у меня есть, но появляется сообщение об ошибке F(0).

??? Attempted to access F(0); index must be a positive integer or logical.
Error in ==> fibonacci at 11
        F(0) = 0;

Как мне сказать matlab, что первые два значения в массиве - это 0 и 1 ??

function  F = fibonacci( n )
%A fibonacci sequence is where the next term in the series is given by the
%sum of the pervious two terms
%Only valid if n is greater than or equal to 2
if n >= 2 ;
    %Make an array with n terms
    F = zeros (1,n);
        %run a for loop from 2 to n
    for i = 2:n;
        F(0) = 0;
        F(1) = 1; 
        F(i) = F(i-1) + F(i-2)
    end
end
end

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Ваше форматирование немного отклонено, но кажется, что вы присваиваете значение нулевому индексу массива. Насколько я знаю, MatLab использует 1 в качестве индекса первого элемента в массиве.

Если вы измените значение if n>=2 на if >=3 и зададите элементы индекса 1 и 2 вместо элементов 0 и 1, все будет в порядке.

См. Также Доступно ли индексирование с нуля в MATLAB

0 голосов
/ 28 сентября 2011

MATLAB использует индексирование на основе 1, что означает, что вы должны переписать индексы, чтобы отразить этот сдвиг, заменив n переменных на n + 1. Это начинает Фибоначчи с 0, но индексируется как 1, 1 в 2, 1 в 3, 2 в 4, 3 в 5 и т. Д. К вашему «n» -ому члену, теперь индексируемому в n + 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...