matlab - 摆脱 MATLAB 中的多个 for 循环
问题描述
我有一个家庭作业练习,要求找到一个找到最小的 3 位数阿姆斯壮数的脚本。
我写了我的剧本。它可以很好地找到这些数字,但我不知道如何在第一个 Armstrong 数字上停下来。
这是我的代码
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
。但是,这只会停止一个循环。你现在有选择
- 设置某种标志并在每个循环中检查它以终止(
break
)它(又名:正确的方法) - 使用
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
推荐阅读
- node.js - 部署 Netlify 应用程序后出现“找不到页面”错误
- flutter - 如何更改列表生成器中单个图标的颜色
- sql - 如何编写 SQL Server 查询以提取 3 个月后的日期?
- javascript - Node.js 中的 Java byteArray 等效项
- java - Wordpress 登录自动化
- ios - Swift textField 输入 hh:mm 作为持续时间
- python - Python Regex:在较大的文本块中获取特定文本,同时跳过一些行
- go - 结构体如何变换字符串
- php - 防止 Guzzle 在非 200 响应上创建 500 错误
- flutter - 发送前更改 FlutterFormBuilder 的值