Recursion Limit Reached Question
10 views (last 30 days)
Show older comments
I am trying to write the recursive code for the Longest Common Subsequence problem and I run into the errror, "Maximum recursion limit reached." The code is:
function result=bin2(n,k)
if (isempty(k) || isempty(n))
result = 0;
elseif n == k
result = bin2(n-1, k-1) +1;
else
result = max((bin2(n-1, k)), (bin2(n, k-1)));
end
with the inputs n = [1,9,5,2,8,6,3,7,4,10] and k = [3,7,10,4,9,5,8,2,6,1] this code is adapted straight from the pseudocode in the text and should give the length of the LCS of the inputs. I don't understand what I've done wrong. Please advise.
0 Comments
Accepted Answer
Matt J
on 27 Jun 2013
Edited: Matt J
on 27 Jun 2013
This
if (isempty(k) || isempty(n))
result = 0;
doesn't seem like it will ever stop the recursion. All you ever do to modify "n" and "k" within the code is to subtract 1 from them. This operation will never make them empty. Perhaps you meant to do something else to them besides subtracting 1.
0 Comments
More Answers (1)
Matt J
on 27 Jun 2013
Edited: Matt J
on 27 Jun 2013
MATLAB has a default limit on the number of recursive calls you can make for the protection of people who do recursion by accident. The error message tells you how to increase the limit from the default, if you really need to do more recursions, but you should probably build some sensible limit into your own code to prevent crashes.
0 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!