我想用*创建一棵树。我每次都会给出一个数字,以指定树的高度。 例如,如果我给数字4作为高度,它应该看起来像这样:
fds
我希望使用console.log出现树
我已经做到了:
*
***
*****
*******
但是如果我使用console.log则不起作用
我想用*创建一棵树。我每次都会给出一个数字,以指定树的高度。 例如,如果我给数字4作为高度,它应该看起来像这样:
fds
我希望使用console.log出现树
我已经做到了:
*
***
*****
*******
但是如果我使用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);
因此,只需使用循环从上到下遍历树的所有层次并隐蔽空格和星星
这是一个有关其工作方式的示例(该示例还会打印到文本区域以供预览以及在控制台中使用)
https://codepen.io/relief_melone/pen/zYYRZmj
,我这样创建了一个。
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);