2017-07-26 39 views
0

我对编程非常陌生,所以这可能是一个简单的解决方案,我根本不知道。我一直在试着编写一个代码,它需要一个特定的数字,例如“10”,并返回一个金字塔,其中基数的星号数量与您输入的值相匹配。我们应该在我们的代码中使用此:JavaScript三角代码?

function makeLine(length) { 
    var line = ""; 
    for (var j = 1; j <= length; j++) { 
    line += "* " 
    } 
    return line + "\n"; 
} 

例如:

image of triangle where the base is matched by the number entered by the programmer

到目前为止我的代码看起来是这样的。我知道这是完全错误的,因为我根本没有得到所需的结果。我究竟做错了什么??

function makeLine(length) { 
    var line = ""; 
    for (var j = 1; j <= length; j++) { 
     line += "* "; 
    } 
    return line + "\n"; 
    function makeTriangle(length) { 
     var line = ""; 
     for (var j = 1; j <= length; j--) { 
      line += "* "; 
     } 
    } 
} 
console.log(makeTriangle(8)); 
+2

我认为,你应该使用那是方法makeLine给你,这意味着你添加到你的程序的任何东西都不应该修改它。看来你给它增加了一些代码,这可能不是预期的。尝试使用它的功能,一个“功能”或一个工具,它可以被调用来从程序的其他部分服务于它的目的。这个函数有一个唯一的责任,就是返回一个代表行的字符串,试着想一下通常的算法,这个算法可以非侵入性地使用这个责任来达到最终目的。 – Sebas

+0

想想你会经历这些步骤。一般的经验法则是:如果您可以在纸上做出来,那么您可以将用于在纸上处理它的步骤转换为自动执行的代码。 –

回答

0

您需要两个for循环:一个用于跟踪长度,另一个用于跟踪当前所在的行。

function makeLine(length) { 
    var line = ""; 
    for (var i = 1; i <= length; i++) { 
    for (var j = 1; j <= i; j++) { 
     line += "* " 
    } 
    line += "\n"; 
    } 
    return line 
} 
0

如果您在es2015上的示例实现。

function makeLine(length) { 
    return Array(length).fill('*').join(''); 
} 

function makePyramid(height) { 
    const result = []; 
    for (let i = 0; i < height; i + 1) { 
    result.push(`${makeLine(i + 1)}\n`); 
    } 
    return result.join(''); 
} 

//* 
//** 
//*** 
//**** 
console.log(makePyramid(4)); 
0

我有一门课程,我正在这个问题,解决它像这样:

function makeLine(length) { 
 
    var line = ""; 
 
    for (var j = 1; j <= length; j++) { 
 
     line += "* "; 
 
    } 
 
    return line + "\n"; 
 
} 
 

 
    function buildTriangle(height) { 
 
    var triangle = ""; 
 
    for (var i = 1; i <= height; i++) { 
 
     // call makeline function 
 
     triangle += makeLine(i); 
 
    } 
 
    return triangle; 
 
} 
 

 
    console.log(buildTriangle(10));