前言
我一直觉得这个实用性不强,但是挺锻炼思维的。那么如何用网页输出杨辉三角形,如下图
本来我也是不会的,相当于没听过杨辉三角是什么东西,但是上网查了一下,了解了定义之后就有了思路,每一行左右都为1,并且每个数等于上一行左右两数之和。
开始实现
知道定义之后就好办了,创建一个二维数组
<script type="text/javascript">
function yanghui(row) {
// 创建一维数组
var arr = new Array(row)
// 创建二维数组
for (var i = 0; i < arr.length; i++) {
arr[i] = new Array(i + 1)
}
// 循环赋值
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
if (j === 0 || i === j) {
arr[i][j] = 1
}
else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]
}
}
}
// 打印三角
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
document.write(arr[i][j] + " ")
}
document.write("<br />")
}
}
yanghui(5)
</script>
上述输出结果如下,可见逻辑已经完成了,但是还少了一步,随便使用css把字体居中即可
完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
text-align: center;
}
</style>
</head>
<body>
<script type="text/javascript">
function yanghui(row) {
// 创建一维数组
var arr = new Array(row)
// 创建二维数组
for (var i = 0; i < arr.length; i++) {
arr[i] = new Array(i + 1)
}
// 循环赋值
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
if (j === 0 || i === j) {
arr[i][j] = 1
}
else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]
}
}
}
// 打印三角
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
document.write(arr[i][j] + " ")
}
document.write("<br />")
}
}
yanghui(5)
</script>
</body>
</html>