美文网首页时光轴LeetCode
前端算法题:JS递归实现杨辉三角

前端算法题:JS递归实现杨辉三角

作者: 侯工 | 来源:发表于2019-06-22 13:54 被阅读104次
    1
    1 1
    1 2 1
    ...
    输入 n ,输出数组
    假设输入 3,输出数组 [[1],[1,1],[1,2,1]]
    
    // 递归
    function triangle(num){
        let arr = [];
        arr.push([1]);
        loop([1]);
        
        function loop(lastarr){                               // 代码循环的部分
            if(lastarr.length < num){
                let newarr = [];
                newarr[0] = 1;                                // 头部是1
                newarr[lastarr.length] = 1;                   // 尾部也是1
                for(let i = 0; i < lastarr.length-1; i++){
                    newarr[i+1] = lastarr[i] + lastarr[i+1];
                }
                arr.push(newarr);
                loop(newarr);
            }
        }
        return arr;
    }
    console.log(triangle(5));
    

    如果是需要输入下面的结果:

    1
    1 1
    1 2 1
    ...
    输入 n ,输出数组
    假设输入 3,输出数组 [1, 1, 1, 1, 2, 1]
    

    只需要添加arr.push的时候添加扩展运算符(...)即可,这里只需要更改两个地方

    1. arr.push([1])  改成 arr.push(...[1]) 
    2. arr.push(newarr)  改成 arr.push(...newarr)
    

    相关文章

      网友评论

        本文标题:前端算法题:JS递归实现杨辉三角

        本文链接:https://www.haomeiwen.com/subject/aanmqctx.html