如何打印交替的Z字形数字模式

时间:2015-10-31 20:46:48

标签: javascript

我一直在尝试伪代码这一个小时并试了很多东西,但我根本无法解决这个问题。当用户输入数字时,如何打印此形状,如10?

   1
2     3
   4  
5     6 
   7     
8     9
   10

4 个答案:

答案 0 :(得分:0)

使用真正的字体可能看起来更好,但这里的模式是......



var theDiv = document.getElementById('theDiv');
var oneNotTwo = true;
theDiv.innerHTML = '';

for (var i = 1; i <= 10; i++) {
  if (oneNotTwo) {
    theDiv.innerHTML += '&nbsp;&nbsp;' + i + '&nbsp;&nbsp;<br/>';
  } else {
    theDiv.innerHTML += i + '&nbsp;&nbsp;&nbsp;' + (i + 1) + '<br/>';
    i++;
  }
  oneNotTwo = !oneNotTwo;
}
&#13;
<div id="theDiv"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这样的事可能有用:

<script>
    var num = 10; 
    var flag = 0; 
    for(var i = 1; i<=num; i++)
    {
        if(flag == 0)
        {
            document.write("&nbsp;" + i + "&nbsp;<br>"); 
            flag = 1; 
        }
        else 
        {
            document.write(i + "&nbsp;" + ++i + "<br>");        
            flag = 0; 

        }
    }
</script>

该标志用于确定是否在当前行上打印一个或两个数字。但是,打印两个数字时必须确保不要超过限制。我没有包括那张支票。

答案 2 :(得分:0)

&#13;
&#13;
var str="";
var one=true;
for(var i=1;i<=10;i=i+1){
  if(one){
    str +="&emsp;"+i+"&emsp;"+"<br>";
  
    }else{
      str +=i+"&emsp;&emsp;"+(i+1)+"<br>";
        i=i+1;//extra increment when two numbers are added
      }
  one=!one;
  }

document.getElementById("data").innerHTML=str;
&#13;
<div id="data"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

简单版本:

var num     = 10;
var zigzag  = [];
var odd     = true; // odd row, even row

for (var i = 1; i <= num; i++) {
    if (odd) {
        zigzag.push(i);
    } else {
        zigzag.push([i, i+1]);
        i++;
    }
    odd = !odd;
}
/* loop through the zigzag array and print it however you like
zigzag = [
    [1],
    [2, 3],
    [4],
    [5, 6],
    [7],
    [8, 9],
    [10],
];
*/

由于我喜欢你的问题因为它具有挑战性,所以我更进了一步。您可以为列设置最小值和最大值:

var num     = 25;
var zigzag  = [];
var odd     = true;
var min     = 3;
var max     = 5;

for (var i = 1; i <= num; i++) {
    if (odd) {
        var row = [];
        for (var j = 0; j < min; j++) {
            var val = i + j;
            if (val <= num) {
                row.push(val);
            }
        }
        if (row.length > 0) {
            zigzag.push(row);
        }
        i += min - 1;
    } else {
        var row = [];
        for (var j = 0; j < max; j++) {
            var val = i + j;
            if (val <= num) {
                row.push(val);
            }
        }
        if (row.length > 0) {
            zigzag.push(row);
        }
        i += max - 1;
    }
    odd = !odd;
}
/*
zigzag = [
    [1,2,3],
    [4,5,6,7,8],
    [9,10,11],
    [12,13,14,15,16],
    [17,18,19],
    [20,21,22,23,24],
    [25]
]
*/

如果剩下的数字,例如上面例子中的25,则会有一个新行。