Recursion Limit Reached Question

10 visualizzazioni (ultimi 30 giorni)
Jason
Jason il 27 Giu 2013
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.

Risposta accettata

Matt J
Matt J il 27 Giu 2013
Modificato: Matt J il 27 Giu 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.

Più risposte (1)

Matt J
Matt J il 27 Giu 2013
Modificato: Matt J il 27 Giu 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.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by