在MATLAB中摆脱多个for循环

Fuat:

我有一个家庭作业练习,要求一个找到最小3位阿姆斯特朗数字的脚本。

我写了我的剧本。查找这些数字效果很好,但是我不知道如何停在第一个阿姆斯特朗数字上。

这是我的代码

a=0;
b=0;
c=0;
for x1=1:1:9
    a=x1^3;
    for x2=0:1:9
        b=x2^3;
        for x3=0:1:9
            c=x3^3;
            d=(x1*100 + x2*10 + x3);
            if (a+b+c) == (d)
                disp(d)
            end
        end
    end
end

它通常会打印153 370 371 407如果我使用break之后,disp它只会首先而不是全部退出,并打印出来153 370 407

最大值:

您可以使用关键字停止循环break但是,这只会停止一个循环。您现在可以选择

  1. 设置某种标志并在每个循环中检查它以终止(break)它(又名:正确方法
  2. 使用return又名:讨厌的方式

选项1

a = 0;
b = 0;
c = 0;
FLAG_STOP = false;
for x1 = 1:9
    a = x1^3;
    for x2 = 0:9
        b = x2^3;
        for x3 = 0:9
            c = x3^3;
            d = (x1*100 + x2*10 + x3);
            if (a+b+c) == (d)
                disp(d)

                % set flag
                FLAG_STOP = true;
                break
            end
        end
        if FLAG_STOP
            break
        end
    end
    if FLAG_STOP
        break
    end
end

选项2

警告

(...)它不仅退出循环;它退出脚本或函数,并将控制权返回给调用程序或命令提示符。

也就是说,之后的所有语句return都将被忽略-无论它们是否是循环的一部分

a = 0;
b = 0;
c = 0;
for x1 = 1:9
    a = x1^3;
    for x2 = 0:9
        b = x2^3;
        for x3 = 0:9
            c = x3^3;
            d = (x1*100 + x2*10 + x3);
            if (a+b+c) == (d)
                disp(d)

                return % <<<<<<<<<<<<
            end
        end
    end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章