ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js设计杨辉三角

2022-04-09 11:03:43  阅读:124  来源: 互联网

标签:printYH 一行 js var 第四行 数组 杨辉三角 设计 数字


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

 

 

因此,我们可以定义两个数组,数组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<i-1;j++){//从第二个数字开始,遍历每一行
                    a2[j] = a1[j-1]+a1[j];
                }
                a2[j]=1;//定义下一行数组的最后一个元素为1
                for(var k=0;k<=j;k++){//把下一行的数组值给上一行数组,从而实现交替循环
                    a1[k] = a2[k];
                }
             }

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

<!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>
        div,p{
            text-align: center;
        }
        span{
            display: inline-block;
            padding: 4px 3px;
        }
    </style>
</head>
<body>
    
    <script>
        //输出函数
        //判断是否为数字
        function printYH(v){
            if(typeof v=="number"){
                var w = 40;
                if(n>30){
                    w = (n-30)+40;
                }
                //随着输入数字的增大,适当调整span的宽度
                var s= '<span style="padding:4px 2px;display:inline-bloke;text-align:center;width:'+w+'px">'+v+'</span>';
                 document.write(s);
            }else {
                document.write(v)
            }
        }
        //输入接口
        var n = prompt('请输入幂数:',9);//默认值9
        n=n-0;
        var t1 = new Date();
        var a1= [1,1];
        var a2 = [1,1];
        printYH('<div style="text-align=center;"> ');
            printYH(1);
            printYH("<br>");
            for(var i=2;i<=n;i++){ //从第三行开始
                printYH(1);//每一行第一个数字
                for(var j=1;j<i-1;j++){//从第二个数字开始,遍历每一行
                    a2[j] = a1[j-1]+a1[j];
                    printYH(a2[j]);
                }
                a2[j]=1;//每一行最后一个数字
                for(var k=0;k<=j;k++){//把下一行的数组值给上一行
                    a1[k] = a2[k];
                }
                printYH(1);
                printYH("<br>");
                

            }
            printYH("</div>");
                var t2 = new Date();
                printYH("<p style='text-align=center;'>耗时为(毫秒):"+(t2-t1)+"</p>");

    </script>
</body>
</html>

演示效果:

 

标签:printYH,一行,js,var,第四行,数组,杨辉三角,设计,数字
来源: https://www.cnblogs.com/ysw-blog/p/16121133.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有