数学建模社区-数学中国

标题: 循环嵌套 [打印本页]

作者: 森之张卫东    时间: 2015-9-8 22:16
标题: 循环嵌套

循环嵌套
一个循环完全出现在另一个循环当中,这种情况经常发生。如果一个循环完全出现在另一个循环当中,我们称这两个循环为带嵌套的循环。下面的例子用两重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将会先后被赋值为123。当完全执行完内部的循环后,外部的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循环是嵌套的,那么它们必须含有独立的循环变量。如果它们含有相同的循环变量,那么内部循环将改变外部循环指数的值。

如果breakcontinue语句出现在循环嵌套的内部,那么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');


如果内部循环指数jj3,那么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




作者: mathworker    时间: 2015-9-9 14:30
好帖子,捧个人场!

作者: mathworker    时间: 2015-9-9 14:31
“break语句将会在包含它的最内部的循环起作用。”
此句需要修改一下才严谨!





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5