如何在JavaScript中获取此数字模式输出



我正在尝试使用JavaScript打印此模式。

5
3 5
1 3 5

到目前为止,我已经尝试了循环

var n = prompt("Enter the number:"); //n=5
for (var i = 1; i <= 3; i++) {
  for (var j = 1; j <= i; j++) {
    if ((i + j) % 2 == 0) {
      document.write(n + " ")
    } else {
      document.write(n - 2 + " ");
    }
  }
  document.write('<br />');
}

,但我只得到这个输出

5 
3 5 
5 3 5

我将如何增强代码?

我认为您不需要第二个循环即可打印金字塔。基本算法的工作原理:

  • 检查一次边缘案例一次(无限循环,负值)
  • 创建用于循环的字符串(str)
  • 保存当前数字 " str中的str和print
  • 减少预定义的距离
  • 重复直到到达&lt;0

这是打印金字塔的简单实现:

function printPyramid(length, distance) {
    
    // check for a distance of 0 => infite loop
    if (distance === 0) return "";
    // check for negeative values
    if (distance < 0) distance = Math.abs(distance);
    if (length < 0) length = Math.abs(length);
    str = "";
    for (let i = length; i > 0; i -= distance) {
        str = i + " " + str;
        console.log(str);
    }
}
printPyramid(5, 2);

这对我来说是一个有趣的小难题。

function* patternGenerator(end = 3, num = 0) {
  let iterationCount = 0;
  let pattern = "";
  for (let i = 0; i < end; i += 1) {
    pattern = `${num - iterationCount * 2} ` + pattern;
    iterationCount++;
    yield pattern.trim();
  }
}
for (let value of patternGenerator(3, 5)) {
  document.write(value);
  document.write("<br />");
}

工作沙盒

最新更新