如何实现首行1个星号、后续行星号递增且间距均匀的星形金字塔?
星号间距金字塔实现问题
我尝试创建一个星形金字塔,要求:
- 第一行包含1个*
- 第二行包含2个*且星号间有相等间距
- 第三、第四行以此类推
我当前的实现代码如下:
let x = 4; let text = ""; for(let i = 1; i <= x; i++) { for(let j = 1; j <= x - i; j++) { text += " "; } for(let k = 0; k < 2 * i - 1; k++) { text += "*"; } text += "\n"; } console.log(text);
但这段代码输出的是实心金字塔,我需要的是每行星号之间有相等间距的效果。
解决方案
调整内层循环逻辑,仅在每行的首尾位置添加*,其余位置填充空格,即可实现星号带间距的金字塔:
let x = 4; let text = ""; for(let i = 1; i <= x; i++) { // 生成前置空格,控制金字塔的缩进 for(let j = 1; j <= x - i; j++) { text += " "; } // 生成每行的星号和间隔空格 for(let k = 1; k <= 2 * i - 1; k++) { // 仅首尾位置为星号,其余为空格 if(k === 1 || k === 2 * i - 1) { text += "*"; } else { text += " "; } } text += "\n"; } console.log(text);
运行后输出(x=4时):
* * * * * * *
内容的提问来源于stack exchange,提问作者mjj
相关产品推荐
相关产品推荐

