在上一章,我们讲到“如果里的如果”,是利用if……else……语句的嵌套来描述多分支的情况。那么圈圈里的圈圈——for语句的嵌套又是怎么样的一种情况呢?
下面先让我们来看一个程序:(程序5.3.1)
运行结果:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
我们把最先遇到的循环语句称为外循环,后遇到的循环语句称为内循环。根据运行结果,我们知道这段程序能够输出0~39这一些整数。虽然使用一个for语句也能够做到这个效果,但是它们的原理是不同的。下面我们就来分析一下这两个for是如何做到输出这些数字的。
创建变量number→遇到第一个for语句,创建变量i=0,进行循环→遇到第二个for语句,创建变量j=0,进行循环→number=0*10+0=0→输出0→继续第二个for语句的循环,j++,number=0*10+1=1→输出1→……输出9→第二个for语句的循环结束,输出换行,i++→i=1,小于3,第一个for语句的循环继续→再次遇到第二个for语句,j=0→number=1*10+0=10→输出10→继续第二个for语句的循环,j++,number=1*10+1=11→输出11→……输出19……
如果你还对for语句嵌套的运行方法不能理解,那么我们可以找出一个生活中的例子。我们都知道,时钟的运行方式:分针走完一圈,时针走一大格,分针走完12圈,时针才走完一圈。在for语句的嵌套中,内循环就像分针,而外循环就像是时针,它走得很慢,要等到内循环走完一圈它才走一格。
算法时间:什么时候要用循环的嵌套?
循环的嵌套往往是用在由多样东西通过不同搭配而组成一样东西的情况下。比如由一个个位数和一个十位数组成一个两位数就要用到循环的嵌套,输出处在x轴和y轴不同位置的点组成的二维图形也要用到循环的嵌套。