循环嵌套
一个循环完全出现在另一个循环当中,这种情况经常发生。如果一个循环完全出现在另一个循环当中,我们称这两个循环为带嵌套的循环。下面的例子用两重for循环嵌套来计算并写出结果。
for ii = 1:3 for jj = 1:3 product = ii * jj; fprintf('%d * %d = %d\n',ii,jj,product); end end
在这个例子中,外部的for循环将把1赋值于循环指数ii,然后执行内部for循环。内部循环的循环体将被执行3次,它的循环指数ii将会先后被赋值为1,2,3。当完全执行完内部的循环后,外部的for循环将会把2赋值于循环指数ii,然后内部的for循环将会再次执行。直到外部for循环执行3次,这个重复过程结束。产生的结果为
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
注意外部for循环指数变量增加之前,内部for循环要完全执行完。
当matlab遇到一个end语句,它将与最内部的开放结构联合。所以第一个end语句与语句“for jj = 1:3”,第二个end语句与语句“for ii = 1:3”联合。如果在循环嵌套中一个end语句突然被删除,将会产生许多难以发现的错误。
如果for循环是嵌套的,那么它们必须含有独立的循环变量。如果它们含有相同的循环变量,那么内部循环将改变外部循环指数的值。
如果break或continue语句出现在循环嵌套的内部,那么break语句将会在包含它的最内部的循环起作用。
for ii = 1:3 for jj = 1:3 if jj ==3; break; end product = ii * jj; fprintf('%d * %d = %d\n',ii,jj,product); end fprintf('End of inner loop\n'); end fprintf('End of outer loop\n');
如果内部循环指数jj为3,那么break语句开始执行,这将导致程序跳出内部循环。程序将会打印出”End of inner loop”,外部循环指数将会增加1,内部循环的执行重新开始。产生的输出值为:
1 * 1 = 1 1 * 2 = 2 End of inner loop 2 * 1 = 2 2 * 2 = 4 End of inner loop 3 * 1 = 3 3 * 2 = 6 End of inner loop End of outer loop
|