Code for 'Reverse a Vector'
37 次查看(过去 30 天)
显示 更早的评论
v = [1 2 3 4 5];
w = reversal(v)
%-----------------------------------------------------------
function w = reversal(v)
persistent z;
s = size(v);
e = s(2);
z(e) = v(1);
if s(2) == 1
return
end
v = v(2:end);
reversal(v);
w = z;
end
% The problem is that i can't pass the random vector.
% Error says Variable w must be of size [1 9]. It is currently of size [1 15].
% Check where the variable is assigned a value.
% Test failed using v = [ -75 -22 57 13 -34 2 -94 -49 -11]
% Why does it work like this?
1 个评论
Atif Penkar
2020-8-23
Did you solve this one? I am stuck on this too, if you could help me out would be great..
回答(6 个)
Md Jawarul Moresalein Ayon
2020-8-28
I have done this one,you may check it ---
function w=reversal(v)
s=length(v);
if s==1
w=v;
else
w(1,1)=v(end);
v=v(1:end-1);
w=[w(1,1),reversal(v)];
end
11 个评论
Hemanth Kumar Reddy Boreddy
2020-9-7
Hey Walter and Bruno, thanks for the help. I was almost there but confused in the end. Thanks again
Micheal Omojola
2020-11-9
编辑:Micheal Omojola
2020-11-9
@Bruno Luong. I have edited Walter's code, and it takes care of empty input:
function y=reversal(v)
y=[];
if length(v)==1
y=v(1);
elseif length(v) > 1
k=v(1:ceil(length(v)/2));
b=v(ceil(length(v)/2)+1 :end);
y=[reversal(b) reversal(k)];
else
return
end
end
Serhii Tetora
2020-8-13
I had no this error with
v = [ -75 -22 57 13 -34 2 -94 -49 -11]
You can also use
w = flip(v)
It is same..
Mohamed Eid
2023-2-10
编辑:Mohamed Eid
2023-2-14
This code solves the problem and passes all of test cases.
function v = reversal(v)
len = length(v);
if len > 1
len = fix(len/2);
left_be_right = reversal(v(1:len));
right_be_left = reversal(v(len + 1:end));
v = [right_be_left,left_be_right];
end
end
0 个评论
Walter Roberson
2020-8-13
That approach is wrong.
Reverse of A B is reverse of B, followed by reverse of A. When you let either A or B be a scalar then reverse of the scalar is the value itself. Therefore you can code each step with just a single recursive call and appending data.
0 个评论
xin yi leow
2021-1-25
function v=reversal(w)
if length(w)==1
v=w(1);
else
v=[reversal(w(2:end)) w(1)];
end
end
1 个评论
Rik
2021-1-25
Your function will fail for empty inputs. The edit below fixed that and makes the function more compact.
function v=reversal(v)
if numel(v)>1
v=[reversal(v(2:end)) v(1)];
end
end
Rajith
2023-12-17
function v = reversal2(v)
if length(v) > 1
ii = round(length(v) / 2);
v = [reversal2(v(ii+1:end)) reversal2(v(1:ii))];
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Software Development Tools 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!