首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while循环中的while循环

while循环中的while循环
EN

Stack Overflow用户
提问于 2015-08-13 13:00:52
回答 3查看 100关注 0票数 0

我在else语句中有一个while循环。当while循环中的条件为真时,我得到了变量k递减(k=k-1)。我希望在k==0之前停止while循环。我曾尝试将while循环放在另一个while循环(while k>1)中,认为如果k下降到1,可能会取消内部循环。有什么想法吗?

代码语言:javascript
复制
if yada yada
    do thing1
else
    while k>1
        while x==true
            k=k-1;
            do thing2
        end
    end
end
EN

回答 3

Stack Overflow用户

发布于 2015-08-13 15:22:54

这不是很有效吗?

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2015-08-13 14:36:35

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

代码语言:javascript
复制
if k <= 1
   break;
票数 0
EN

Stack Overflow用户

发布于 2015-08-13 16:57:16

由于您的while-loop基本上实现了一个计数器增量,因此我强烈建议您用for-loop替换它(实际上,两者都是)。除了可读性更强之外,它还允许Matlab应用优化,从而大大缩短执行时间。请看这里:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
k = 5
k = 4
k = 3
k = 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31979819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档