我知道它在 Java 和 C++ 等中是可能的,但这在 Matlab 中可能吗?我最近发现 Matlab 没有捷径,value++
而是他们必须使用value = value+1
,所以我想知道是否可以将此函数转换为迭代函数。我不知道从哪里开始。如果是这样,它是否不如递归函数有益?
function [lines] = recurse(R,C, lines, T_l, count, directions)
[rows, columns] = size(lines);
if((R < 2 || C < 2) || (R > rows-1 || C > columns - 1) || count>500)
count= count+1;
return;
end
count= count+1;
direction = directions(R,C);
if(direction >= 68 || direction <=-68)
if(lines(R-1,C) > T_l)
lines(R-1,C) = 0;
lines = recurse(R-1,C, lines, T_l, count, directions);
end
if(lines(R+1,C) > T_l)
lines(R+1,C) = 0;
lines = recurse(R+1,C, lines, T_l, count, directions);
end
elseif (direction <= -23 && direction >-68)
if(lines(R+1,C+1) > T_l)
lines(R+1,C+1) = 0;
lines = recurse(R+1,C+1, lines, T_l, count, directions);
end
if(lines(R-1,C-1) > T_l)
lines(R-1,C-1) = 0;
lines = recurse(R-1,C-1, lines, T_l, count, directions);
end
elseif (direction >= 23 && direction < 68)
if(lines(R+1,C-1) > T_l)
lines(R+1,C-1) = 0;
lines = recurse(R+1,C-1, lines, T_l, count, directions);
end
if(lines(R-1,C+1) > T_l)
lines(R-1,C+1) = 0;
lines = recurse(R-1,C+1, lines, T_l, count, directions);
end
else
if(lines(R,C+1) > T_l)
lines(R,C+1) = 0;
lines = recurse(R,C+1, lines, T_l, count, directions);
end
if(lines(R,C-1) > T_l)
lines(R,C-1) = 0;
lines = recurse(R,C-1, lines, T_l, count, directions);
end
end
lines(R,C) = 255;
return;
基本上,我目前有一个递归调用第二个函数的函数。我希望将这个递归函数合并到作为迭代命令集调用它的函数中。我很确定它会更慢,但速度对我来说不是问题,我很想看看循环是如何工作的。谢谢。