用JavaScript输出杨辉三角

使用JavaScript输出杨辉三角

起因

因为最近在学习JavaScript,老师有布置一道课后习题,让我们使用JavaScript输出杨辉三角,然后我感觉很简单,上机课的时候就没有写,后来有人问我怎么写,我就准备分分钟写一个出来,却发现,分分钟根本写不出来...

构思

思路一:递归

我最开始想到的是递归的思路,但是后来发现我没办法使用递归完成,但我感觉应该可以的,如果有时间,我再想想怎么使用递归的方法完成。

思路二:for循环

递归的方法不可行之后,我就想要直接使用for循环给做出来,啧啧啧,还是失败了。。。

思路三:数组

最后迫不得已,又经过几天的研究,发现如果使用数组的话是可以完成的,下面一层的第二个数等于上面一层第一个数加第二个数、第三个数等于上一层的第二个数加第三个数,算法就是这样,所以我用了两个一维数组来写。也就是说手动构造杨辉三角的第一第二层:
1
1 1
循环到第三层的时候,i为3,list为[1,1],这个时候开始一个新的循环(用x控制),从list[1]开始,给临时的数组temp添加值,值为list[x - 1] + list[x],这样就实现了两个1之间2,这个时候给temp最前面加一个1,给最后面加一个1,就把第三层的所有数给存在了临时数组temp里面:
temp=[1,2,1]
以后的每层都是相同的原理,具体的代码如下:(num为杨辉三角的层数)

代码

var num = 6;

var list = [];
var temp = [];

for (var i = 0; i < num; i++) {
    if (i == 0) {
        this.temp[0] = 1;
    } else if (i == 1) {
        this.temp[1] = 1;
    } else {
        this.temp = [];
        for (var x = 0; x < this.list.length; x++) {
            if (x > 0) {
                var t = this.list[x - 1] + this.list[x];
                this.temp.push(t);
            }
        }
        this.temp.unshift(1);
        this.temp.push(1);
    }

    this.list = this.temp;
    for (var k = 0; k < this.list.length; k++) {
        document.write(" "+this.list[k]);
    }
    document.write("</br>")
}

我并没有对输出的结果排版,因为我发现排版更难,所以就直接放弃了。

结尾

以后还是要多做一些练习题,这些习题的确可以锻炼思维能力,我非常肯定我现在的杨辉三角代码是很垃圾的代码,我想我也应该会在最近的几天内去想办法优化它。

Last modification:November 7th, 2019 at 12:15 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment