[英]Tree exercise with a loop in javascript
我想用 *. 我每次都会给出一个数字以指定树的高度。 如果我给数字 4 作为高度,它应该看起来像这样:
*
***
*****
*******
我希望树使用 console.log 出现
我已经这样做了:
var size = 4; document.write( "<center>" + Array.apply(0, new Array(size)).map(function(_, i) { return new Array((i + 1) * 2).join(" * "); }).join("<br>") + "</center>" );
但如果我使用 console.log 它不起作用
您只需要计算每层左侧的空间。 最深的从j=0
开始。 上面j=1
处的地板。 等等。
给定高度h
,
请注意,如果您从楼层0
开始,您将得到j=h-1
,并在随后的每个楼层删除一个空间。
因此,您可以简单地编写
const h = 4; console.log(Array(h).fill(0).map((_,i)=>{ return ' '.repeat(h-1-i)+'*'.repeat(i*2+1) }).join('\n'))
澄清我的评论。 您将无法在控制台中显示 html。 所以你需要忘记标签。 当您打印树时,您应该知道它将有多大(高度)。 所以你知道你的星星之前有多少个空格。
空格数由总高度给出 - 当前从上到下的“级别” - 1
并且星数是当前“等级”的2倍加1
let spaces = " ".repeat(height-i-1);
let stars = "*".repeat(i*2+1);
所以只需使用一个循环到 go 从上到下遍历树的所有级别并连接空格和星号
这是一个关于它是如何工作的示例(示例还打印到文本区域以进行预览以及在控制台中)
我创造了一个这样的。
function drawTree(height) {
for ( let i = 0; i < height ; i++ ) {
let star = '*';
let space = ' ';
for ( let j = 1; j <= i; j++ ) {
star = star + '**';
}
let gap = space.repeat(height-i-1);
star = gap + star;
console.log(star);
}
}
let number = prompt('Give number for tree height');
drawTree(number);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.