Recursive function to reverse a vector
이전 댓글 표시
The question is to write a function to reverse a vector so v=[1 2 3] becomes v= [3 2 1]
It must be recursive
So my idea how to write this function is start off with d=1 the last digit of w, the output, is equal to the first digit of v the input. so thats what I wrote. As the function develops d eventually equals the length of the original input symoblising the function has reached an end and it will return w. I just don't know how to keep d growing everytime, as currently with every time I recall the function d will rewrite itself to be 1. I think it has something to do with the base case but I don't know. I'm not looking for the answer on a plate but more like a discussion of someone talking me through it
function [w]=reversal(v)
d=1
e=length(v)
w(end-d+1)=v(d)
if d==e
w=w
else
[w]=reversal(v)
end
end
채택된 답변
추가 답변 (2개)
David Hill
2020년 10월 21일
편집: David Hill
2020년 10월 21일
function w=reversal(v)
if length(v)==1
w= v;
else
w= [v(end),reversal(v(1:end-1))];
end
댓글 수: 3
katherine keogh
2020년 10월 21일
David Hill
2020년 10월 21일
Just like John explained below. You stop the recursion when the length of the vector is equal to 1, otherwise you keep calling the function and growing the layers of recursion. For example: [1 2 3 4] becomes
w=[4 , reversal([1 2 3])]
w=[3, reversal([1 2])]
w=[2, reversal([1])]
w=1
You go 4 layers into the recursion. When the recursion ends, it all comes together.
w=[4 3 2 1]
katherine keogh
2020년 10월 21일
SUTITHI
2022년 11월 22일
0 개 추천
function w=reversal(v) if length(v)==1 w= v; else w= [v(end),reversal(v(1:end-1))]; end
카테고리
도움말 센터 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!