如何为循环编写Javascript代码,使其在满足第一个条件时中断?
我试图编写一个脚本来找到最大的公因数(最高公因数/HCF),但是循环是向下计数的,所以我想在它找到第一个公因数时立即中断(因为它是向下计数的,所以这也是HCF) 然而,我的代码最终打印出了所有的公因子,并没有在找到4时立即跳出循环,HCF为12和8 这是:如何为循环编写Javascript代码,使其在满足第一个条件时中断?,javascript,Javascript,我试图编写一个脚本来找到最大的公因数(最高公因数/HCF),但是循环是向下计数的,所以我想在它找到第一个公因数时立即中断(因为它是向下计数的,所以这也是HCF) 然而,我的代码最终打印出了所有的公因子,并没有在找到4时立即跳出循环,HCF为12和8 这是: function maxi(a, b) { for (var i = a; i >= 1; i--) { for (var j = b; j >= 1; j--) { if (a % i == 0) {
function maxi(a, b) {
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i);
break;
}
}
}
}
}
maxi(12, 8);
我猜你的逻辑是对的 换衣服
if (b % j == 0 && i == j){
console.log(i);
break;
}
到
一种方法是使用“return”而不是“break”
函数最大值(a,b){
对于(变量i=a;i>=1;i--){
对于(var j=b;j>=1;j--){
如果(a%i==0){
如果(b%j==0&&i==j){
返回i;
}
}
}
}
}
console.log(maxi(12,8))代码>这样标记循环:
function maxi(a,b) {
loop1:
for (var i = a; i >= 1; i--){
loop2:
for (var j = b; j >= 1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
console.log(i);
break loop2; // Breaks out of all loops.
}
}
}
}
}
maxi(12,8);
人们忘记了它们的存在,但它们是语言的一个完全有效的部分。当您中断时,除非您另外指定,否则您将从最近的循环中断
可以使用指定要从中断开的特定循环
函数最大值(a,b){
外部:
对于(变量i=a;i>=1;i--){
内部:
对于(var j=b;j>=1;j--){
如果(a%i==0){
如果(b%j==0&&i==j){
控制台日志(i);
打破外部;
}
}
}
}
}
maxi(12,8)代码>您只需测试是否已达到所需的输出,并在外部for循环中放入第二个断点,如下所示
function maxi(a,b){
var iAmFinished = false;
for (var i=a; i>=1; i--){
for (var j=b; j>=1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
console.log(i);
iAmFinished = true;
break;
}
}
}
if (iAmFinished) {
break;
}
}
}
maxi(12,8);
有两种同样优雅的方法可以达到同样的效果
备选案文1:
使用而不是:
在函数中调用return语句时,此
功能停止。如果指定,则会将给定值返回给
函数调用者。如果省略表达式,则返回undefined
相反
备选案文2:
结合使用:
带标签的语句可以与break或continue语句一起使用。
它是在语句前面加上一个标识符,您可以引用该标识符
[……]
可以使用标签标识循环,然后使用中断或
continue语句,指示程序是否应中断
循环或继续执行
使用return/return i而不是breakCan可以很好地工作,您不能只使用return i;而不是打破循环?那太棒了,非常感谢,真的很有帮助。你能告诉我回程有什么不同吗?为什么回程无效?谢谢你advance@MohamedHegazy您有三个嵌套for循环。您中断最内部的循环,但在下一次迭代中,外部循环跳回内部循环。中断将中断内部循环,因此外部循环仍将运行。return将使您的代码返回函数调用站点。谢谢您的回答,但是为什么return会使函数正常运行,而break不会?区别在于“break”语句只中断最内部的for循环,而让外部的for循环运行。而“return”则完全退出函数,将答案返回给调用者。
function maxi(a,b){
var iAmFinished = false;
for (var i=a; i>=1; i--){
for (var j=b; j>=1; j--){
if (a % i == 0){
if (b % j == 0 && i == j){
console.log(i);
iAmFinished = true;
break;
}
}
}
if (iAmFinished) {
break;
}
}
}
maxi(12,8);
function maxi(a, b) {
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i);
return;
}
}
}
}
}
maxi(12, 8);
function maxi(a, b) {
outerloop:
for (var i = a; i >= 1; i--) {
for (var j = b; j >= 1; j--) {
if (a % i == 0) {
if (b % j == 0 && i == j) {
console.log(i););
break outerloop;
}
}
}
}
}
maxi(12, 8);