while循环在while循环中

时间:2015-08-13 05:00:52

标签: matlab loops if-statement while-loop

我在while语句中有一个else循环。虽然while循环中的条件为真,但变量k递减(k=k-1)。我希望while循环在k==0之前停止。我已经尝试将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

3 个答案:

答案 0 :(得分:3)

这不是诀窍吗?

message

答案 1 :(得分:0)

你可以将这句话添加到最里面的while

if k <= 1
   break;

答案 2 :(得分:0)

由于你的while循环基本上实现了反增量,我强烈建议用for循环替换它(实际上,它们都是)。除了更具可读性之外,它还允许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 = 2