<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>杨辉三角</title> </head> <body> <script> function print(v){ if(typeof v == "number"){ var w = 40; if(n>30){ w = (n - 30) + 40; } var s = "<span style='padding:4px 2px; display:inline-block; text-align:center;width:"+ w + "px;'>" + v + "</span>"; document.write(s); }else{ document.write(v); } } var n = + prompt("请输入幂数", 11);var a1 = [1, 1], a2 = [1, 1]; print('<div style="text-align:center;">'); //输出第一行 print(1); print("<br />"); //从第二行开始,第二行,直接输出 1 1 for(var i = 2; i <= n; i++){ //每行的第一个1 print(1); //使用数组计算输出的值,再print() for(var j = 1; j < i - 1; j++){ a2[j] = a1[j - 1] + a1[j]; print(a2[j]); } //保存数组的最后一个1 a2[j] = 1; for(var k = 0; k <= j; k++){ a1[k] = a2[k]; } //输出每行的最后一个1 print(1); print("<br />"); } print("</div>");</script> </body> </html>
分析:使用两个数组,一个数组作为参照行,一个数组作为结果行。
根据杨辉三角的规律,第2行起,每行的第n个值为前一行的第n-1个值和第n个值之和(第一个值和最后一个值除外,它们的值都为1)。
使用for循环,分别计算第二行开始的除第一个值和第二个值的其他值,用 a2数组保存,将所求行的所有数值保存(a2[j] = 1),最后将a2数组赋值给a1数组,为下一行作参照。