Matlab中的continue、break和return语句

Continue:
经常用在for和while语句中,continue一旦被执行,就会终止当前循环,进行下一次循环。
eg, 在for 循环中:

clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:20
    if mod(i,2)==0
        continue
    else
    
    fprintf('the array is %d\n',i)
    end
end

结果是:

the array is 1
the array is 3
the array is 5
the array is 7
the array is 9
the array is 11
the array is 13
the array is 15
the array is 17
the array is 19

我们跳过了能够被2整除的数字,找出来了剩下的数字。

eg, 在while 循环中:

clc
clear all
close all

i = 1;
COND  = 1;

while COND ==1
    
   if mod(i,2)==0
       i = i+1;
        continue;
   else
    fprintf('the array is %d\n',i)
   end
   
   if i>=19
       COND = 2;
   end
    i = i+1;
end

这里可以看到,我们在符合while条件下的循环中,如果被2整除了,那么就会跳过这个循环,直接进到下一个while循环下,从头开始执行。再一次进入if 判断新的i是否满足整除要求。

结果如下:

the array is 1
the array is 3
the array is 5
the array is 7
the array is 9
the array is 11
the array is 13
the array is 15
the array is 17
the array is 19

break:

break和continue用法相似,区别在于,一旦执行了break, 就会推出循环,而不是进入下一个循环:

在for循环中:
我们在1:10中,到一个被3整除的,一旦找到了第一个,整个for循环就不会再执行了。但是要注意,只是不执行break所在的循环,其他的循环还是要执行的。

clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:10
    if mod(i,3)==0
        break
    else
    
    fprintf('the array is %d\n',i)
    end
end

结果为:

the array is 1
the array is 2

如果我们人工的在添加一个for 循环:

%%
clc
clear all
close all

i = 1;
COND  = 1;

for j = 1:4

for i = 1:j
    if mod(i,3)==0
        break
    else
    
    fprintf('the array is %d\n',i)
    end
end
end

结果为:

the array is 1
the array is 1
the array is 2
the array is 1
the array is 2
the array is 1
the array is 2

我们会把外层的for 循环全部执行完。

return:
return 跳出函数,返回调用函数处。
无论是while还是for,直接跳出函数,返回到调用函数之前。

%%
clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:20
    if mod(i,2)==0
        return
    else
    
    fprintf('the array is %d\n',i)
    end
end
%%
clc
clear all
close all

i = 1;
COND  = 1;

while COND ==1
    
   if mod(i,2)==0
       i = i+1;
       return;
   else
    fprintf('the array is %d\n',i)
   end
   
   if i>=19
       COND = 2;
   end
    i = i+1;
end

执行这两段函数都是一个结果:

the array is 1
>> 

当i = 2时,函数就跳出了。

用一个更简单的例子说明,我们有一个很多层的if else 判断语句,这个时候用return 就很好,如果符合条件就可以直接跳出多层if else语句,而不需要把所有的if else 全部执行一遍再跳出。

clc
clear all
close all
flag = 20 ;
if flag <-10
      fprintf('y<-10\n')
      return
elseif flag >20
    fprintf('y>20\n')
    return
elseif flag >=-10 && flag <20
     fprintf('-10<=y<20\n')
     return
else fprintf('y=20\n')
     return
end

总结来说:

break       跳出循环;
continue    继续循环,(不执行 循环体内continue 后面的语句,直接进行下一循环)
return      跳出函数,返回调用函数 处。

刚才的代码放在一起方便复制:

clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:20
    if mod(i,2)==0
        continue
    else
    
    fprintf('the array is %d\n',i)
    end
end
%%
clc
clear all
close all

i = 1;
COND  = 1;

while COND ==1
    
   if mod(i,2)==0
       i = i+1;
        continue;
   else
    fprintf('the array is %d\n',i)
   end
   
   if i>=19
       COND = 2;
   end
    i = i+1;
end
%%
clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:4
    if mod(i,3)==0
        break
    else
    
    fprintf('the array is %d\n',i)
    end
end


%%
clc
clear all
close all

i = 1;
COND  = 1;

for j = 1:4

for i = 1:j
    if mod(i,3)==0
        break
    else
    
    fprintf('the array is %d\n',i)
    end
end
end
%%
clc
clear all
close all

i = 1;
COND  = 1;

for i = 1:20
    if mod(i,2)==0
        return
    else
    
    fprintf('the array is %d\n',i)
    end
end
%%
clc
clear all
close all

i = 1;
COND  = 1;

while COND ==1
    
   if mod(i,2)==0
       i = i+1;
       return;
   else
    fprintf('the array is %d\n',i)
   end
   
   if i>=19
       COND = 2;
   end
    i = i+1;
end
%%
clc
clear all
close all
flag = 20  ;
if flag <-10
      fprintf('y<-10\n')
      return
elseif flag >20
    fprintf('y>20\n')
    return
elseif flag >=-10 && flag <20
     fprintf('-10<=y<20\n')
     return
else fprintf('y=20\n')
     return
end


发布了56 篇原创文章 · 获赞 11 · 访问量 8759

猜你喜欢

转载自blog.csdn.net/gophae/article/details/103859511