JavaScript打印杨辉三角

摘要:
<阳辉三角<div#container{width;margin;}<divide=“容器”>buttonid=“post”>打印阳辉三角<对于(varia=0;i<j<=i;}}类型+=“<<br/>

1、什么是杨辉三角?


1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 

上面就是一个简单的杨辉三角的例子

观察一下,

第n行有n个元素,

第n行的第一个元素和第n个元素为1,

其他元素,假设为第n行第m个元素,则其值为第n-1行第m-1个元素+第n-1行第m个元素。

2、附上代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>杨辉三角</title>

    <style type="text/css">
        
        div#container{
            width: 300px;
            margin: 0 auto;
        }

    </style>
</head>
<body>

<div id="container">
    
        <div>
        <input type="text" placeholder="输入行数" id="input"/>
    </div>

    <div>
        <br/>
        <button id="post" >打印杨辉三角</button>
    </div>
</div>

    <script type="text/javascript">
        
        var input = document.getElementById("input");
        var submit = document.getElementById("post");

        submit.onclick = function(){

            var inputvValue = input.value;
            var lineNumber = parseInt(inputvValue);

            if(!lineNumber){
                alert("您的输入是"+inputvValue+",有误,请重新输入!");
            }
            else{

                //新建数组,放置杨辉三角
                var array = new Array(lineNumber);

                for(var k=0;k<lineNumber;k++){
                    array[k] = new Array();
                }

                var type = "";

                for(var i=0;i<lineNumber;i++){

                    for(var j=0;j<=i;j++){

                        //每一行首尾两个元素赋值为1
                        if(0 == j || i == j){
                            array[i][j] = 1;
                            type+=array[i][j]+" ";
                        }
                        //其他元素为上一行前一列元素上一行这一列元素
                        else {
                            array[i][j] = array[i-1][j-1] + array[i-1][j];

                            type+=array[i][j]+" ";
                        }

                    }
                        type+="<br/>";
                }

                var container = document.getElementById("container");

                container.innerHTML+=type;

            }

        };

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

3、额外发现的问题

上面代码的click事件只能被触发一次,想再次打印需要刷新,是因为使用innerHtml,使得html被重新加载,里面绑定的事件不见了。

解决方法是不用innerHtml,而是生成节点插入

            var text = document.createTextNode(type);
            container.appendChild(text);

而代码没有修改是因为如果生成节点的话,"<br/>"会被当做文本插入,而不会换行,所以不采用这种方法。

但是呢,下一次碰到采用innerHtml且click事件只能被触发一次时,就能用上述这种方法了。

本文由作者原创,有什么错误欢迎指教,转载请注明出处http://www.cnblogs.com/kerita/p/5280868.html

免责声明:文章转载自《JavaScript打印杨辉三角》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【216】◀▶ IDL 字符串操作说明 (黑底)Delphi的TService的輸入桌面切換(服务程序)(windows登录界面如何截图)(使用了OpenDesktop和GetThreadDesktop等API)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Webservice接口和Http接口

WebService又是一种高级应用,与之前学习的Struts、Spring、Hibernate等框架不同。WebService是面向服务的架构(SOA),看起来像是比SSH框架要大。那么它到底是做什么用的?什么才是面向服务的架构? 让我们来看一种需求,集团公司可能具有多种WEB应用。比如,前年开发了个进销存系统、去年开发了一个ERP、今年又开发了一个OA...

android开发之shape详解

很多时候,使用shape能够实现的效果,你用一张图片也能够实现,但问题是一张图片无论你怎么压缩,它都不可能比一个xml文件小,因此,为了获得一个高性能的手机App,我们在开发中应该遵循这样一个原则:能够用shape实现的效果尽量不使用图片来实现。 今天我们就一起来看看shape的使用。 首先,使用shape画的图形,这个xml文件的根节点是shape,如下...

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业。你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好。新浪一收购GOOGLE。是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢; 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式。非常多小伙伴都问我。为...

c++ 数据预处理(数据去噪,归一化)

正态分布3σ原则,把3倍方差之外的点设想为噪声数据来排除。 归一化,将数据经过处理之后限定到一定的范围内,一般都会将数据限定到[0,1]。 #include <iostream>#include <string>#include <vector>#include <algorithm>#include <...

markdown语法---根据使用不断扩充中

markdown语法 标题 标题使用 #表示,几个#表示几级标题,最多六级标题。 斜体 使用 两个星号*括起来的文字是斜体字这是斜体字 粗体 使用四个 * 号括起来的是粗体字。 这是粗体字 引用 这个就是引用,以 > 开始。 超链接 以 []()的方式写,图片需要在前面加一个感叹号. eg: [百度](https://www.baidu.com)...

Quartz 设置一个半小时任务实现

该文章属于本人原创,转载请注明出处。   spring + Quartz 设置定时任务时要求没一个半小时执行一次   设置两个相同的定时任务   第一个从整点开始每三小时执行一次              <!--每三小时执行一次任务,从整点开始-->        <propertyname="cronExpression"valu...