我在else语句中有一个while循环。当while循环中的条件为真时,我得到了变量k递减(k=k-1)。我希望在k==0之前停止while循环。我曾尝试将while循环放在另一个while循环(while k>1)中,认为如果k下降到1,可能会取消内部循环。有什么想法吗?
if yada yada
do thing1
else
while k>1
while x==true
k=k-1;
do thing2
end
end
end发布于 2015-08-13 15:22:54
这不是很有效吗?
if yada yada
x = f(x) %// If you don't have anything here, you should use "if ~yada yada"
%// instead of "else"
else
while k>1 && x == true %// BTW: Lower case t in true
x = g(y) %// I hope you have something more than "k=k-1" in this loop
k = k-1;
end
end发布于 2015-08-13 14:36:35
你可以把这句话添加到你最里面的while上
if k <= 1
break;发布于 2015-08-13 16:57:16
由于您的while-loop基本上实现了一个计数器增量,因此我强烈建议您用for-loop替换它(实际上,两者都是)。除了可读性更强之外,它还允许Matlab应用优化,从而大大缩短执行时间。请看这里:
yadayada = false;
x = true;
if yadayada
else
kmax = 5; % or whichever maximum value you want k to have
for k = kmax:-1:2 % have k start at kmax, decrement by 1 each time, until k==2
fprintf('k = %d\n', k);
% do something useful in the loop
if ~x
break;
end
end
end输出:
k = 5
k = 4
k = 3
k = 2https://stackoverflow.com/questions/31979819
复制相似问题