使用抽象思维打印:
矩形、空心矩形
正方形、空心正方形
梯形、空心梯形
三角形、空心三角形:
var printStr = '';
//基本功能:打印指定数量的字符
function printS(n, str){
for(var i = 0; i < n; i++){
printStr += str;
}
}
//基本功能:换行
function n(){
printStr += "\n";
}
//基本功能:空心
function kx(cols, str){
printS(1, str);
printS(cols-2, ' ');
printS(1, str);
}
//基本功能:控制:梯形|三角形|是否空心
function xz(rows, cols, iskx){
//开始执行
for(var i = rows; i > 0; i--){
if(iskx == true){
//第一行或最后一行
if(i == rows || i == 1){
printS(i, ' ');
printS(cols, '*');
}else{
printS(i, ' ');
kx(cols, '*');
}
n();
}else{
printS(i, ' ');
printS(cols, '*');
n();
}
//递增2
cols += 2;
}
}
//功能:矩形
function jx(a, b){
for(var j = 0; j < a; j++){
printS(b, '*');
n();
}
}
jx(5, 10);
n();
//功能:正方形
function zfx(a){
jx(a, a);
}
zfx(5);
n();
//功能:空心矩形
function kjx(rows, cols){
//条件判断
if(rows <= 2 || cols <= 2){
console.log('不能形成环!');
return false;
}
//执行
for(var i = 0; i < rows; i++){
//第一行或最后一行
if(i == 0 || i == rows-1){
printS(cols, '#');
}else{
kx(cols, '#');
}
n();
}
}
kjx(5, 10);
n();
//功能:空心正方形
function kzfx(a){
kjx(a, a);
}
// kzfx(2);
kzfx(20);
// 功能:梯形
function tx(rows, cols){
if(cols <= 1){
console.log('不能形成梯形');
return false;
}
xz(rows, cols, false);
}
tx(5,3);
//功能:三角形
function sjx(rows){
xz(rows, 1, false);
}
sjx(5);
//功能:空心梯形
function kxtx(a, b){
if(b <= 1){
console.log('不能形成梯形');
return false;
}
xz(a, b, true);
}
kxtx(5, 3);
//功能:空心三角形
function kxsjx(a){
xz(a, 1, true);
}
kxsjx(5);
console.log(printStr);