小皮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);
}
}