Определение Fibonacci sequence заключается в следующем:
спецификации для вашей функции довольно странно, но тем не менее выполнимо. Сначала вам нужно проверить, равен ли первый член 0 или 1. Если это так, второй член будет 1. Если что-то еще, первые два члена будут точно такими же, как и начальный. Вы требуете кучи if
заявлений первых .... так что-то вроде этого:
function out = fibonacci(initial_term, N)
if initial_term == 0 || initial_term == 1
second_num = 1;
else
second_num = initial_term;
end
if N == 1
out = initial_term;
elseif N == 2
out = [initial_term second_num];
else
out = zeros(1,N);
out(1:2) = [initial_term second_num];
for idx = 3 : N
out(idx) = out(idx-1) + out(idx-2);
end
end
end
Первых if
заявления проверяет, чтобы увидеть, если первоначальный срок либо 0, либо 1. Если, второй номера будет 1. Если это не так, второе число будет таким же, как и начальный.
Далее мы проверяем, что такое N
. Если это 1, просто верните начальный срок. Если это 2, верните массив начального и второго членов. Если это что-то большее, то создайте выходной массив размером N
, где первые два элемента инициализируются, как и в случае N = 2
, затем мы просто переходим к циклу и используем формулу рекуррентности Фибоначчи для заполнения каждого элемента в выходе из индекса 3 и далее ,
Вы также можете написать петлю for
как петлю while
. Помните, что петля while
сохраняет итерирование доlogical
Условие, что проверка петли while
становится false
. Таким образом, вы могли бы сделать:
out = zeros(1,N);
out(1:2) = [initial_term second_num];
idx = 3;
while idx <= N
out(idx) = out(idx-1) + out(idx-2);
idx = idx + 1;
end
Пример вызовов
>> out = fibonacci(3, 6)
out =
3 3 6 9 15 24
>> out = fibonacci(0, 6)
out =
0 1 1 2 3 5
>> out = fibonacci(4, 10)
out =
4 4 8 12 20 32 52 84 136 220
"номер, чтобы начать последовательность". По определению последовательность Фибоначчи начинается с 'f0 = 0' и' f1 = 1'. Не могли бы вы пояснить, что вы подразумеваете под «числом, чтобы начать последовательность»? – rayryeng
Например, если два входа для функции (0,6), выход должен быть [0 1 1 2 3 5]. Для входов (4,10) выход должен быть [4 4 8 12 20 32 52 84 136 220]. – timrow
Что делать, если два входа были: '(3,6)'? Будет ли выход «[3 4 4 5 6 9]»? – rayryeng