js设计杨辉三角


使用递归算法执行效率非常低

因此,我们可以定义两个数组,数组1为上一行数字列表,数组2为下一行数字列表,为代求数组。

假设上一行数字为[1,1],即第二行数字,那么下一行数组的元素就等于上一行相邻两个数字之和,即为2,然后设置数组两端的值为1,这样就可以求出下一行数组,即第三行数字列表。求第四行数组的的值,可以把已经计算出的第三行数组作为上一行数组,第四行数组则为代求的下一行数组,以此类推。

我们可以使用双层循环嵌套结构,外层循环结构遍历高次方的幂数(行数),内层循环每次方的项数(列数)

核心代码如下:

 var a1= [1,1];
 var a2 = [1,1];
            for(var i=2;i<=n;i++){ //从第三行开始遍历,n为幂数
               a2[0]=1;   //定义下一行数组的第一个元素为1
                for(var j=1;j//从第二个数字开始,遍历每一行
                    a2[j] = a1[j-1]+a1[j];
                }
                a2[j]=1;//定义下一行数组的最后一个元素为1
                for(var k=0;k<=j;k++){//把下一行的数组值给上一行数组,从而实现交替循环
                    a1[k] = a2[k];
                }
             }

完成算法设计后,就可以设计输出数表,完整代码如下:




    
    
    
    Document
    


    
    

演示效果: