回 帖 发 新 帖 刷新版面

主题:请教matlab中递归问题

station(1)=struct('zjrl',40,'zxjscl',0.5,'qptyl',0.1,'id',1,'mhl',400);
station(2)=struct('zjrl',40,'zxjscl',0.6,'qptyl',0.1,'id',2,'mhl',400);
station(3)=struct('zjrl',20,'zxjscl',0.6,'qptyl',0.2,'id',3,'mhl',450);

station(1).zjrl;
station(2).zjrl;
station(1).zjrl*station(1).zxjscl;
%keys()=[151.1,146.6,144.3,139.7,153.4,164.9,164.9,178.6,196.9,206.1,215.3,187.8,190.1,194.7,206.1,208.4,206.1,203.8,219.8,229.0,224.4,199.2,185.5,174.0];
    %key=sort(keys())
load0=[32,34,34,42,50,55,62,65,65,74,72,68,68,72,72,72,72,82,72,68,68,62,58,46];
load=sort(load0);
load(1);
load_size=24;

middle2=zeros(24,1);
for i=1:24
    middle1=0.0;
    for j=1:24
        if(load(i)<=load(j))
            middle1=middle1+1;
        end
    end
    middle2(i,1)=middle1;
end
E0=0;
for x=1:load(24)
    E0=E0+f0(x);
end
E0=load_size*E0

Eg1=0;
for x=1:station(1).zjrl
    Eg1=Eg1+f0(x);
end
Eg1=load_size*(1-station(1).qptyl)*Eg1

Eg2=0;
for x=(station(1).zjrl+1):(station(1).zjrl+station(2).zjrl)
    Eg2=Eg2+fn(1,x);
end
Eg2=load_size*(1-station(2).qptyl)*Eg2



%求解f0(x)
function f=f0(x)
load0=[32,34,34,42,50,55,62,65,65,74,72,68,68,72,72,72,72,82,72,68,68,62,58,46];
load=sort(load0);
load(1);
yy=x;
load_size=24;
middle2=zeros(24,1);
for i=1:24
    middle1=0.0;
    for j=1:24
        if(load(i)<=load(j))
            middle1=middle1+1;
        end
    end
    middle2(i,1)=middle1;
end
for i=1:23
    if(load(i)<yy && yy<=load(i+1))
        f=middle2(i+1,1)/24;
    end
end
if(0<= yy && yy<= load(1))
    f=middle2(1,1)/24;
elseif (yy>load(24))
    f=0;
end



function f=fn(n,x)
station(1)=struct('zjrl',40,'zxjscl',0.5,'qptyl',0.1,'id',1,'mhl',400);
station(2)=struct('zjrl',40,'zxjscl',0.6,'qptyl',0.1,'id',2,'mhl',400);
station(3)=struct('zjrl',20,'zxjscl',0.6,'qptyl',0.2,'id',3,'mhl',450);
t=0;
if n==0
    f=f0(x);
else 
    if x<station(n).zjrl  t=0; end
    if x>station(n).zjrl   t=x-station(n).zjrl;   end
     f=(1-station(n).qptyl)*f(n-1,x)+station(n).qptyl*f(n-1,t);
end
end

想要的是输入fn(n,x),然后程序自动运算下去 ,fn(n-1,x),.....f(0,x)...
请教高手,我要如果让其中fn函数实现递归运算呢?


回复列表 (共1个回复)

沙发

这里我试算的fn(1,x),希望递归到fn(0,x),然后再调用f0(x),

我来回复

您尚未登录,请登录后再回复。点此登录或注册