Работа с MATLAB. Мне нужно написать функцию с именем m_s
, с v
(вектор) и n в качестве входных аргументов и summa
и индексом в качестве выходных аргументов, функция должна найти n последовательных элементов в заданном векторе, сумма которых равна наибольший, а также должен найти индекс первого элемента последовательности n. Я пробовал это, но возникает проблема, когда summa
достигает максимума, проблема с моим кодом заключается в том, что, когда он достигает максимальной суммы, тогда summa2
начинает увеличиваться способом, отличным от ожидаемого, он дает сумму не последовательные числа. Когда пользователь дает больше n
, чем длина вектора, функция должна возвращать: n=-1
и summa = 0
. Также, когда n такое же число, как length(v)
, функция должна возвращать n=1
и summa = sum(v)
. Это мой код
function [summa index] = m_s(v,n)
lv = length(v);
times = lv - n;
if n > lv
summa = 0;
index = -1;
elseif n == lv
summa = sum(v);
index = 1;
else
for i = 1:times
sum1 = sum(v(i:n))
sum2 = sum(v(i+1):(n+1))
if sum1 < sum2
summa = sum2;
index = i+1;
n = n+1;
elseif sum1 > sum2
n = n+1;
end
end
end
end