2.2.6循环的嵌套

在循环体中,可以继续使用循环语句,这就是嵌套循环,也叫多重循环。如:

 

A

B

C

D

1

[]

 

 

 

2

for 2,1000

for A1

if A2%B2==0

next A2

3

 

>A1=A1|A2

 

 

在例子中,A1中存储找到的质数序列;A2循环从21000的整数;在B2中循环质数列表,一旦发现当前A2中的数会被某个质数整除,就用next A2命令获取A2中的下个数;如果当前质数列表中所有数都不能整除A2中的数,说明找到了新的质数,将其添加到A1的序列中。其中,D2中的next C命令指定跳过以为主格的循环体剩下的代码,直接进入下轮循环。执行后,A1中,1000以内的质数序列如下:

使用next命令时,也可以不指定主格C,跳过next命令格所在的最内层次的循环。

如下面的百鸡问题:公鸡每只值5钱,母鸡每只值3 钱,而3 只小鸡值1 钱。用100钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?解答如下:

 

A

B

C

D

1

[]

 

 

 

2

for 100

if 5*A2>100

break

 

3

 

for 100-A2

=100-A2-B3

=5*A2+3*B3+C3/3

4

 

 

if D3>100

next A2

5

 

 

else if D3<100

next

6

 

 

>A1=A1|[[A2,B3,C3]]

 

在代码中,A2循环公鸡的总数;在B2中判断,如果公鸡的总价已经超过100,说明公鸡的总数已经太多了,此时在C2中用break命令终止循环。B3中继续循环母鸡可能的总数。在D4中,如果发现当前鸡的总价已经超过了100,说明在当前母鸡总数已经太多了,可以用next A2,增加公鸡的总数,重新尝试。在D5中,当前鸡的总价还小于100,可以继续增加母鸡的总数来尝试,这里的next命令会跳过当前最内层的循环代码,即以B3为主格的循环。A1中得到的结果如下: