Calling user functions recursively
2 次查看(过去 30 天)
显示 更早的评论
I have user created functions called f11(), f12(), f13(), f21(), f22(), f23()... I want to call these function recursively for i=1 to n for j=j to m eval(fij()) I have tried with the eval() function. It does not work. Could someone help me? thank you
1 个评论
John D'Errico
2017-2-20
And yet another reason not to write numbered functions, numbered variables, etc. Regardless, you are asking to call them in sequence, but not recursively. A recursive call is one where a function calls itself.
回答(2 个)
dbmn
2017-2-20
First of all: Listen to John - he is right about this. Try not to use numbered functions and variables (you can read why this is a bad idea on numerous posts on Matlab Answers - just search).
But because I know you gonna try it anyway, here is a solution
A) Do nothing but change your eval to: (BAD)
eval(sprintf('f%d%d()', i, j))
B) Create a function caller that handles your functions (Better, but uses still the numbered functions - but at least it can be debugged)
function [] = function_caller(idx)
switch idx
case 1
% your function here
case 2
% your function here
end
end
C) Rewrite your code and avoid the numbered functions - there must be a smarter way to do this.
Work with Functions and Subfunctions instead and try to get a clear image about what your code actually needs to do in what order.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!