2017-02-28 80 views
-1

Directions: 对于这个测验,您将创建一个名为buildTriangle()的函数,它将接受一个输入(最宽处的三角形)并构建一个三角形。请参阅下面的示例输出。三角测验可以想出如何做到这一点

buildTriangle(10); 返回 https://ibin.co/3Dv8ajw80RxV.png 看到图像

我们已经给你一个功能makeLine()开始。该函数占用一行长度,并构建一行星号并将换行符返回换行符。

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

您将需要在buildTriangle()中调用此makeLine()函数。

这将是您写过的最复杂的程序,因此在深入研究代码之前需要花点时间思考问题。您需要从JavaScript工具带中获得哪些工具?专业人员在写任何东西之前先计划他们的代码仔细考虑你的代码需要采取的步骤,并按顺序写下来。然后通过您的列表并将每一步转换为实际的代码。祝你好运!

my code!! 
/* 
* Programming Quiz: Build A Triangle (5-3) 
*/ 

// creates a line of * for a given length 
let line; 
function makeLine(length) { 
    line = ""; 
    for (var j = 1; j <= length; j++) { 
     line += "* "; 
    } 
    return console.log(line + "\n"); 
} 

// your code goes here. Make sure you call makeLine() in your own code. 

function buildTriangle(num) { 
    for(var i = 1;i < num+1;i++) { 
     makeLine(i); 

    } 
} 

buildTriangle(10); 

它可以更好地使用功能和循环没有额外的疯狂的东西?

回答

0

我不认为你的意思是(当然也没有必要)完全改变makeLine()函数。由于它以字符串的形式返回单行,因此您只需在调用者中接收该行并以某种方式对其执行操作。

换句话说,你的循环是正是你需要什么(对于荣誉),但是,使用原有的功能,这将是这样的:

function buildTriangle(num) { 
    var triangle = ""; 
    for(var i = 1; i <= num; i++) {  // add each line in turn. 
     triangle += makeLine(i); 
    } 
    return triangle;      // return the whole thing. 
} 

console.log(buildTriangle(10));   // or alert if you prefer. 

你会发现,我稍微改变你的for循环结束条件,我认为这样做更有意义(从1到N,不包括N + 1在内)。

而且,由于您是建筑物是三角形,因此您不应将其打印在函数中。函数名称应该反映他们所做的事情(这也是为什么我认为改变makeLine()以便输出该行是一个坏主意)。

相反,建成的三角应该返回给调用者,他们可以随心所欲地做任何事情。在这种情况下,这意味着打印它,但他们可能希望将其附加到电子邮件,将其保存到文件中,或将其用作加密密钥:-)。

+0

很好的感谢,但一种方法来清洁代码 'triangle + = makeLine(i);' –

+0

好点,@Rishabh,我原来为特定的技能水平定制它,但我刚刚注意到原来的函数' + ='无论如何,显然你的教育工作者认为没关系。我根据你的建议改变了它。 – paxdiablo