Как написать хвостовую рекурсивную функцию для вычисления суммы вектора? Функция принимает 2 входных аргумента: вектор v и сумму. Рекурсия хвоста означает, что последняя часть функции должна вызывать себя.Matlab - Рекурсивная векторная сумма хвоста
У меня есть базовая оболочка функции, которая должна выглядеть, но я не уверен, как написать рекурсивную часть.
function result = vectorSum(v,sum)
%takes a vector v and the returns the sum of all elements in the vector
if length(v) == 0
result = 0;
elseif length(v) == 1
result = v;
else
result = vectorSum(v,sum)
end
end
Функция возвращает результат 0 для пустого вектора, и если длина вектора равна 1, то возвращается значение V (1).
Если 'длина (v)> 1', то ваш код ничего не делает, и снова проходит одни и те же входы в себя , Это не может быть правильно! – David
Где вы выполняете 'sum'? Где вы уменьшаете размер 'v' в рекурсии, так что выполнение в конечном итоге завершается? В дополнение к этим комментариям, я скажу, что Matlab, насколько мне известно, не выполняет оптимизацию хвостовой рекурсии, а очень рекурсивный код имеет тенденцию работать хуже, чем итеративный. – TroyHaskin