在MATLAB上使用持久变量



我一直在努力让这个持久变量发挥作用,但我不确定出了什么问题。这个想法是我输入一个值,即"年余额(2000("。如果价值低于5000英镑,则利息为5%,如果价值大于或等于5000英镑,那么利息为10%。我希望能够手动运行该函数任意多次,直到我得到一个以上的值,比方说5100英镑,因此我没有使用循环。

function annualbalance(x)
persistent annualbalance;
if isempty(annualbalance)
annualbalance = 0;
elseif annualbalance < 5000
annualbalance = annualbalance * 1.05
elseif annualbalance >= 5000
annualbalance = annualbalance * 1.10
end

我认为您不想在这里使用持久变量。但你确实想输出你的结果。我猜你想要这个功能:

function x = annualbalance(x)
if x < 5000
x = x * 1.05
elseif x >= 5000
x = x * 1.10
end

你可以像这样反复调用这个函数:

moneys = 1000;   % your start value
moneys = annualbalance(moneys);
moneys = annualbalance(moneys);
moneys = annualbalance(moneys);
moneys = annualbalance(moneys);
moneys = annualbalance(moneys);
moneys = annualbalance(moneys);
moneys           % display the amount you have now after 6 years

如果你想看看你需要等待多少年才能获得一定的金额,你可以使用如下循环:

moneys = 1000;   % your start value
years = 0;       % keeps track of time
while moneys < 5100  % target amount
moneys = annualbalance(moneys);
years = years + 1;
end
fprintf('I have %f money after %f yearsn', moneys, years);

也许您可以尝试定义一个输出变量,并将变量(而不是函数(延迟为持久变量:

function annualbalance(x)
persistent out;
if isempty(out)
out = 0;
elseif out < 5000
out = out * 1.05
elseif out >= 5000
out = out * 1.10
end

然而,这不是一个很好的编码方式。变量out将无法在annualbalance函数之外访问。也许使用输出变量会更好。此外,函数接收x作为输入参数,但x在函数中不显示。你也应该看看。

相关内容

  • 没有找到相关文章

最新更新