嵌套循环
循环可以嵌套,以在另一个迭代任务中执行迭代任务。考虑以下循环:
ch = 'abc';
m = 3;
for c = ch
for k = 1:m
disp([c num2str(k)]) % NUM2STR converts the number stored in k to a charachter,
% so it can be concataneted with the letter in c
end
end
我们使用 2 个迭代器来显示 abc
和 1:m
的所有元素组合,它们产生:
a1
a2
a3
b1
b2
b3
c1
c2
c3
我们还可以使用嵌套循环来组合每次要完成的任务,以及在几次迭代中要完成的任务:
N = 10;
n = 3;
a1 = 0; % the first element in Fibonacci series
a2 = 1; % the secound element in Fibonacci series
for j = 1:N
for k = 1:n
an = a1 + a2; % compute the next element in Fibonacci series
a1 = a2; % save the previous element for the next iteration
a2 = an; % save ht new element for the next iteration
end
disp(an) % display every n'th element
end
这里我们想要计算所有 Fibonacci 系列 ,但每次只显示 n
th 元素,所以我们得到
3
13
55
233
987
4181
17711
75025
317811
1346269
我们可以做的另一件事是在内部循环中使用第一个(外部)迭代器。这是另一个例子:
N = 12;
gap = [1 2 3 4 6];
for j = gap
for k = 1:j:N
fprintf('%d ',k) % FPRINTF prints the number k proceeding to the next the line
end
fprintf('\n') % go to the next line
end
这次我们使用嵌套循环来格式化输出,并仅在元素之间引入新的间隙(j
)时制动线。我们遍历外部循环中的间隙宽度,并在内部循环中使用它来迭代向量:
1 2 3 4 5 6 7 8 9 10 11 12
1 3 5 7 9 11
1 4 7 10
1 5 9
1 7