用Javascript输出杨辉三角形

1,324 阅读1分钟

前言

我一直觉得这个实用性不强,但是挺锻炼思维的。那么如何用网页输出杨辉三角形,如下图

image.png

本来我也是不会的,相当于没听过杨辉三角是什么东西,但是上网查了一下,了解了定义之后就有了思路,每一行左右都为1,并且每个数等于上一行左右两数之和。

image.png

开始实现

知道定义之后就好办了,创建一个二维数组

    <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把字体居中即可

image.png

完整代码如下:

<!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>

最后

image.png