我有这个循环问题,我真的不明白为什么我的代码不起作用,我甚至在纸上画这个,而且我的逻辑它看起来不错但是它的不工作,请帮助我。
function drawTree(h) {
for(var i=0; i<=h; i++){
var star = '';
for(var k=0; k<=1; k++){
star += " ";
};
for(var j=0; j<=i; j++) {
star += "*";
};
};
console.log(star);
};
drawTree(5);
&#13;
答案 0 :(得分:4)
请参阅代码中的注释以进行更改。
function drawTree(h) {
for(var i=0; i<=h; i++){
var star = '';
//Changed to start high then decrease
for(var k = 1; k <= h - i; k++){
//shortened to one space
star += " ";
};
for(var j=0; j<=i; j++) {
//Added space so there is an odd number
//of symbols and the star above fits
//the space
star += " *";
};
//Moved into the loop
console.log(star);
};
};
drawTree(5);
&#13;
请注意,使用String.prototype.repeat
:
function drawTree(h) {
for (var i = 0; i <= h; i++){
console.log(" ".repeat(h - i) + " *".repeat(i + 1));
};
};
drawTree(5);
&#13;
另请注意,您的示例会为drawTree(5)
的调用产生一个包含六颗星的基线。我不确定这是否有意。上面的代码重现了所述行为,编辑它以显示一条线不应该太难。
答案 1 :(得分:0)
您正在为每一行重新设置它,但只在最后打印它。
将console.log(star);
移至第一个循环的末尾。
答案 2 :(得分:0)
您必须先将 console.log 语句置于for循环中。这应该是一棵半树。 如果你想要正确的树,那么在星之前预先悬空。 计算行数的中心并在其前面添加空格。
希望这不是作业问题。
function drawTree(h) {
for(var i=0; i<=h; i++){
var star = '';
for(var k=0; k<=1; k++){
star += " ";
};
for(var j=0; j<=i; j++) {
star += "*";
};
console.log(star);
};
};
drawTree(5);
答案 3 :(得分:0)
function drawTree(h){
for (var i = 0; i < h; i++) {
var star = '';
var space = (h - i);
if (i == 0){
star += ' '.repeat(space + 1) + '\n';
}
star += ' '.repeat(space + 1);
var zero = 2 * i + 1;
star += '*'.repeat(zero);
console.log(star);
}
}
drawTree(5);
&#13;