Info
This question is closed. Reopen it to edit or answer.
finding if a digit repeats itself an equally at 2 different numbers
1 view (last 30 days)
Show older comments
i got an assignment to see if the digit "d" repeats itself equally in "n1" and "n2" without using loops and using recursive function only. I've managed to find the difference between these numbers (the difference between the times 'd' appears in "n1" and in "n2"). now i have to return a logic "1" or "0". "1" if the difference is 0. "0" if the difference is not 0.
6 Comments
Guillaume
on 11 Mar 2015
Same without num2str. Still does not need recursion:
decompose = @(n) floor(mod(n, 10.^(1:ceil(log10(n)))) ./ 10.^(0:ceil(log10(n)-1)));
r = sum(decompose(n1) == d) == sum(decompose(n2) == d)
Answers (2)
Adam
on 11 Mar 2015
r = ~x
should do the trick if x is the difference that can be 0 or greater
6 Comments
Adam
on 11 Mar 2015
I guess you could put a recursion level counter in then and only convert to logical if you are at the top level of recursion. It's ugly, but then recursion is pretty ugly in general. I got lost in a recursive function yesterday and gave up in the end!
Guillaume
on 11 Mar 2015
Edited: Guillaume
on 11 Mar 2015
That's the only way you could do it using a single function that recurse on itself since you need to keep track of all digits at all level of recursion.
This is kind of against the spirit of recursion though.
Recursion is ill suited to this problem anyway.
David Shapiro
on 11 Mar 2015
Edited: Image Analyst
on 11 Mar 2015
1 Comment
Adam
on 11 Mar 2015
Urgh, 3 explicit hasty returns and 5 elseif clauses...if I could use an emoticon it'd be throwing up!
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!