Getting rid of the for loop
1 次查看(过去 30 天)
显示 更早的评论
D
I'm having trouble getting rid of the for loop in my function. I have written out this code that works fine but I would like to get rid of the for loop and have it operate the same, i.e recursively. Thank you for the help in advance.
0 个评论
采纳的回答
Geoff Hayes
2015-11-7
Max - please include all of your code and describe what the above is intended to do. It appears to be some sort of factoring (?) algorithm.
A recursive function for the above for loop could be
function [r,v] = getrv(q,qn,r,v)
if qn<=q+1
if r>q
vn = floor(r/q);
rn = 10*(r-vn*q);
else
vn = 0;
rn = 10*r;
end
[rn,vn] = getrv(q,qn+1,rn,vn);
r = [r rn];
v = [v vn];
end
and it would be called from your main function as
[r,v] = getrv(q,2,10*p,0);
Note how the recursive call to getrv is concatenated with the r and v inputs.
4 个评论
Geoff Hayes
2015-11-7
Max - use my example as a guide to modify the above code so that the for loop is replaced. Since you want to replace the above with a recursive function, ask yourself what should the inputs be to subsequent calls to the function? What should the output be? What is your stopping condition?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!