Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中带有循环的树练习_Javascript_Loops - Fatal编程技术网

javascript中带有循环的树练习

javascript中带有循环的树练习,javascript,loops,Javascript,Loops,我想用*创建一棵树。我每次都会给出一个数字,以指定树的高度。 如果我给数字4作为高度,它应该是这样的,例如: * *** ***** ******* 我希望使用console.log显示树 我已经做到了: var size=4; document.write( “”+Array.apply(0,新数组(大小)).map(函数(1;,i){ 返回新数组((i+1)*2); }).join(“”)+“” );您只需要计算每层楼左边的空间。 最深的一个开始于j=0。在j=1上的

我想用*创建一棵树。我每次都会给出一个数字,以指定树的高度。 如果我给数字4作为高度,它应该是这样的,例如:

    *
   ***
  *****
 *******
我希望使用console.log显示树

我已经做到了:

var size=4;
document.write(
“”+Array.apply(0,新数组(大小)).map(函数(1;,i){
返回新数组((i+1)*2);
}).join(“
”)+“”
);您只需要计算每层楼左边的空间。 最深的一个开始于
j=0
。在
j=1
上的楼层。等等

给定高度
h

  • 楼层h-1->j=0
  • 楼层h-2->j=1
  • 楼层0->j=h-1
请注意,如果从楼层
0
开始,将得到
j=h-1
,并在随后的每一层删除一个空间

这样你就可以轻松地写作了

常数h=4;
console.log(数组(h).fill(0).map(((i,i)=>{
返回“”。重复(h-1-i)+'*'。重复(i*2+1)

}).join('\n')
以清除我的评论。您将无法在控制台中显示html。所以你需要忘记标签。当你打印这棵树时,你应该知道它有多大(高)。所以你知道有多少空间会在你的恒星前面

空间数由总高度给出-从上到下的当前“标高”-1

恒星的数量是当前“等级”的2倍加1

let spaces=”“.重复(高度-i-1);
让stars=“*”。重复(i*2+1);
因此,只需使用一个循环,从上到下遍历树的所有级别,并将空间和星星连在一起

下面是一个关于如何工作的示例(示例还打印到文本区域以供预览以及在控制台中)


我创建了这样一个

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);
函数绘图树(高度){
for(设i=0;i对于(让j=1;j,您将无法在控制台中显示html代码。请使用以下方法。因为您使用的是单空格字体的控制台输出。因此,当您还知道要打印多少行时,您就知道每个行前面有多少空格。因此,只需使用console.log(ysspaces+z*[stars])循环X次即可@relief.melone我不知道我要打印多少行。它应该可以与任何给定的数字一起工作。我只是以4为例。你不喜欢用printTree(4)之类的东西调用函数吗?我的意思是,你如何决定树应该有多高?