在屏幕上打印正三角形----O(N)复杂度
function tang(lv){
function _t(lv){
return (1 << 2*lv + 1) - 1;
}
var ret = [],t = 0, s = new Array(lv).join("0");
for(var i = 0; i < lv - 1; i++){
var x = _t(i);
ret.push(s + (x ^ t).toString(2) + s);
s = s.slice(1);
t = x << 1;
}
ret.push(new Array(lv+1).join("* "));
return ret;
}
document.write(tang(13).join().replace(/,/g,"<br/>").replace(/0/g," ").replace(/1/g,"*"));
上面的可能还只能输出有限的阶数(整数限制),下面的算法直接用字符串:
function tang(lv){
var ret = [],c = "*", s = new Array(lv).join(" "), t = k = "";
for(var i = 0; i < lv-1; i++){
ret.push(s + c + t + s);
s = s.slice(1);
k = k ? k+" " : " ";
t = k + c;
}
ret.push(new Array(lv+1).join("* "));
return ret;
}
document.write(tang(6).join("<br/>").replace(/ /g," "));
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8