递归matlab函数返回值,MATLAB中递归 嵌套 子函数

function temserch(t,yzd)

global fhx bs tem u;

%%%%%%%%%%%%%%%%%   寻找连接矩阵tem   %%%%%%%%%%%%%%%

jj=find(fhx==t);

if sum(jj)~=0

u=u+1;

end

%%%%%%%%%%%%   找到与该点相关的点并写到tem的最后一列   %%%%%%%%%%%%%

for i=1:size(jj,1)

if jj(i)<=bs

tem(i,u)=fhx(jj(i),2);

else

jj(i)=jj(i)-bs;

tem(i,u)=fhx(jj(i),1);

end

end

%%%%%%%%%%%%%   将第二列的已知点删除,以免出现“假导线”   %%%%%%%%%%%%%%

for i=1:size(tem,1)

if pd(tem(i,2),yzd)

tem(i:end-1,2)=tem(i+1:end,2);

tem(end,2)=0;

end

end

%%%%%%%%%%%%%   已经找过的点不再找   %%%%%%%%%%%

for i=2:u-1

j=find(tem(:,u)==tem(1,i));

if j

tem(j:end-1,u)=tem(j+1:end,u);

tem(end,u)=0;

end

end

j=find(tem(:,3)==tem(1));

tem(j:end-1,3)=tem(j+1:end,3);

tem(end,3)=0;

%%%%%%%%%%%%%   已知点紧跟的点已经找完了,该结束了   %%%%%%%%%%

if tem(1,2)==0

tem(1)=0;

return

end

%%%%%%%%%%%%%   寻找到盲端   %%%%%%%%%%%%%

if sum(tem(:,u))==0

tem=ydys(tem,u);       %往后退了一步

u=u-1;

%     temserch(tem(1,u),yzd);

end

yp;

return

function yp

global tem u yzd

%%%%%%%%%%%%%%   如果最后一列的第一个元素不是已知点,继续往下寻找   %%%%%%%%%%%%%%%

if  pd(tem(1,u),yzd)==0

temserch(tem(1,u),yzd);

else    %%%%%%%%%%%%   反之此点为已知点   %%%%%%%%

if pp(tem(1),tem(1,u))    %表示该附和导线已经寻找过了

[tem gg]=ydys(tem,u);       %往后退了一步或者用下一个点往下找

u=u-gg;

yp;

else

cc(yzd);

if u==1

return

else

temserch(tem(1,u),yzd);

end

end

end

return

function cc(yzd)

%%%%%%%%   存储数据子程序,方便递归调用   %%%%%%%%%%%%%%

global tem u k du fhh jjr;

%zxu=u;

%yzdt(find(yzdt==tem(1,1)))=[];             %把找过的已知点从yzdt中删除

fhh(k,:)=tem(1,:);

k=k+1;

jjr(k)=tem(1,u);

if sum(pd(yzd,jjr))==sum(ones(size(yzd)));

tem(:,:)=0;

end

tem(:,u)=zeros(max(du(:,2)),1);            %删除最后一列

tem=ydys(tem,u);

u=u-1;

if pd(tem(1,u),yzd)

if u>1

if pp(tem(1),tem(1,u))==0

k=k-1;

cc(yzd);

end

end

end

return

function t=pp(a,b)

%%%%%%%   判断a,b组成的向量是不是包含在fhxt中   %%%%%%%%%%

global fhxt;

t=0;

l=size(fhxt,1);

j=find(a==fhxt);

for i=1:length(j)

if j(i)<=l

if fhxt(j(i)+l)==b

t=1;

end

end

if j(i)>l

if fhxt(j(i)-l)==b

t=1;

end

end

end

return

这个函数中我就重复调用了temserch函数,最后如果一级级返回的话可能会很麻烦啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值