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

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值