循环嵌套for循环
首先搞明白for循环控制的是什么,其次是搞清楚行数和列数的关系,先来一个简单的小例子:
外层循环控制九九乘法表一共有九行,记得加换行
内层循环控制每一列,我们先看行与列的数量关系,第一行有一列,第二行有两列,第三行有三列,以此类推,我们可以得到n与m的关系是相等的,所以确定第二个for内的条件是m<=n。
document.write('<table border="1">')
for (var n = 1; n <= 9; n++) {
document.write("<tr>");
for (m = 1; m <= n; m++)//每一列要参照行数来定,所以列数小于行数
{
document.write('<td>' + `${n}*${m}=` + n * m + ' ' + '</td>');//每一类
}
document.write("</tr>");
document.write('<br/>');//每一行换行,不加会变成一行
}
document.write('</table>')//每一行都要换行,否则会一行显示
搞明白基本原理后,通过九九乘法表来进一步理解:
等腰三角形检验一下掌握情况
等腰三角形需要一个外循环确定行数,两个内循环来确定星星和空格。外层for循环确定一共有八行,内层第一个循环控制每一行的空格数量,内层第二个循环确定星星的数量:当我们不加内层第一个for循环,即没有空格时,如下图:
for (n = 0; n < 8; n++) {
for (m = 0; m <= n; m++) {
document.write('* ');
}
document.write("<br>");
}
不加空格的效果和九九乘法表实现效果相同,此时我们要考虑每一行的**空格数量(j)和行数(n)**的数量关系,第一行有7个空格:当n=1时j=7(8-n);第二行有6个空格:当n=2时j=6(8-n);以此类推,我们得到空格j与行数n的关系:j=8-n;所以控制空格的for内的条件就得到:j<8-n,最终实现效果代码如下:
for (n = 0; n < 8; n++) {
for (j = 0; j < 8 - n; j++) {
document.write(' ');
}
for (m = 0; m <= n; m++) {
document.write('* ');
}
document.write("<br>");
}