我正在尝试使用javascript打印此模式。
5
3 5
1 3 5
到目前为止,我已经尝试过for循环
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
我如何增强代码?
答案 0 :(得分:0)
我认为您不需要第二个for循环即可打印金字塔。基本算法的工作原理如下:
这是打印金字塔的简单实现:
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);
答案 1 :(得分:-1)
对于刚刚了解发电机的我来说,这是一个有趣的小难题。
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 />");
}