小皮2017-04-11 13:13:591楼
以下代码用了ES6,取名比较随意s就是space,空格的意思,n是要总次数,第二个参数是输出的图形
第一个很简单,累加就好了
//ES6
function first(n,print = "*"){
for(let i = 0; i < n ;i++)
console.log(i > 0 ? print.repeat(i + 1) : print);
}
//非ES6
function first(n,print){
print = print || "*";
var temp = "";
for(var i = 0; i < n ; i++)
console.log(temp += print);
}
第二个也很简单,依旧是累加,这次累加的是空格,如果是第一次进入循环就不打印空格
//非es6
function second(n,print){
print = print || "*****"
for(var i = 0,s = "";i < n;i++)
console.log(i > 0?(s = " " + s) + print : print);
}
关于倒过来,不用es6的话,写两个循环(也许可以不用写两个循环吧,但是我没想到),用了es6的话用repeat函数可以写的更好看点
//es6
function secondReverse(n,r = "*****"){
for(let i = 0;i < n;i++)
console.log(" ".repeat(n-i-1) + r );
}
//非es6
function secondReverse(n,print){
print = print || "*****";
for(var i = n;i > 0;i--){
var s = "";
for(let j = 0 ; j < i ; j++)
s+= " ";
console.log(s + print);
}
}
三角形
//ES6
function third(n,print = "*"){
for(let i = 0 ; i < n ; i++ )
console.log(" ".repeat(n-i-1) + (i > 0 ? print.repeat(2*(i+1)-1) : print))
}
//非Es6
function third(n,print){
print = print || "*";
var temp = "";
for(var i = 0 ; i < n ; i++ ){
let s = "";
for(var j = 1 ; j < n - i ;j++)
s += " ";
console.log(i > 0 ? s + (temp = temp + print + print) : s + (temp +=print));
}
}
倒过来
//ES6
function thirdReverse(n,print = "*"){
for(let i = n ; i > 0 ; i--)
console.log(" ".repeat(n - i) + print.repeat(2*i-1))
}
//非ES6
function thirdReverse(n,print){
print = print || "*";
var s = "";
for(var i = 0 ; i < n ; i++ ){
let temp = "*";
s += " ";
for(var j = 1 ; j < n - i ;j++)
temp += print + print
console.log(s + temp);
}
}