how to count the total number of recursion ?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kratos
am 27 Mär. 2015
Kommentiert: Andrew Newell
am 27 Mär. 2015
Hello
I have a function
function [out num] = collatz(val)
num = 0;
if val == 1
out = 1;
elseif mod(val, 2) == 0
out = collatz(val/2);
else
out= collatz(3*val+1);
end
k = num + 1;
num = [num k]
end
For the number of counts, num I keep getting num = [0 1] How do I count the total number of recursion that occurs? I heard that we can make a helper function but I have no idea how to make one. Thank you.
0 Kommentare
Akzeptierte Antwort
Andrew Newell
am 27 Mär. 2015
Bearbeitet: Andrew Newell
am 27 Mär. 2015
The problem is that you're not passing num to collatz, so how can it know how many times it has been called? Here is a version that makes num an optional argument, so you don't need to provide it in your call:
function [out, num] = collatz(val,varargin)
if nargin >1
num = varargin{1};
else
num = 0;
end
if val == 1
out = 1;
elseif mod(val, 2) == 0
[out,num] = collatz(val/2,num);
else
[out,num] = collatz(3*val+1,num);
end
num = num+1;
Now if you try
[out,num] = collatz(4)
you get
out =
1
num =
3
2 Kommentare
Andrew Newell
am 27 Mär. 2015
They must be defining it differently than I am. Just replace
num = 0;
by
num = -1;
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Programming Utilities finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!