Reverse character array using recursion
조회 수: 9 (최근 30일)
이전 댓글 표시
I'm having trouble creating a function that would reverse a character array using recursion. For example, I want my function to return 'py' when inputting "yp". My overall code doesn't seem right though.
function array2 = charReversal(array1)
if array1==0
return;
else
array2=chsrReversal(reverse(array1,array1-1));
disp(array2)
end
댓글 수: 0
채택된 답변
Guillaume
2017년 10월 17일
I assume this is homework so I'm hesitant even answering the question since the whole purpose of the exercise is to make you think of a recursive algorithm.
It is trivial to reverse a string by recursion: take the first element of the string, put it at the end of the string returned by calling the recursive function with the rest of the string (from character 2 to end). The recursion stops when the function receives only 1 character.
댓글 수: 2
추가 답변 (5개)
Anuj Kumar
2020년 10월 9일
instead of using v=[v(end) reversal(1:end-1)] which won't satisfactorily on large arrays,i would recommend this piece of code
function v=reversal(v)
if(length(v)>1)
d=length(v);
x=0;
if mod(d,2)==0
x1=d/2;
x2=x1+1;
m=v(1:x1);
n=v(x2:end);
v=[reversal(n),reversal(m)];
else
x1=fix(d/2);
x2=x1+2;
m=v(1:x1);
mid=(x1+1:x1+1);
n=v(x2:end);
v=[reversal(n),v(mid),reversal(m)];
end
end
end
댓글 수: 0
Saurabh Wani
2020년 8월 17일
i have try this code and it gives reversal of array elements using recursive method
function w=reversal(v)
s=length(v)
if s==1
w=v
else
w=[v(end) reversal(V(1:s-1))]
end
댓글 수: 2
Hazem Ahmed
2020년 8월 19일
편집: Walter Roberson
2020년 8월 20일
could you explain what are you doing in this line?
w=[v(end) reversal(V(1:s-1))]
Piyush Gupta
2020년 9월 10일
편집: Piyush Gupta
2020년 9월 10일
its an array, you can declare without comma too.
KSSV
2017년 10월 17일
You can either use fliplr or give indices in reverse.
str = 'py' ;
fliplr(str)
str(end:-1:1)
댓글 수: 4
ambuj aman
2020년 9월 15일
function out = reversal(in)
if length(in) <= 1
out = in;
else
out = [ reversal(in(2:end)) in(1) ];
end
end
댓글 수: 0
Selman Baysal
2022년 1월 8일
I solve this problem by removing first and last elements in the vector until one or zero element remains.
function w = reversal(v)
if length(v) <= 1
w = v;
else
v1 = v(end); v(end) = [];
v2 = v(1); v(1) = [];
w = [v1 reversal(v) v2];
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!