金字塔


<html>
<head></head>
<body>
<script type="text/javascript">




/**
      *             第一层个数:1*2-1 = 1    第一层空白:最高层-当前层
     ***            第二层个数:2*2-1 = 3    第二层空白:最高层-当前层
    *****           第三层个数:3*2-1 = 5    第三层空白:最高层-当前层
   *******          第四层个数:4*2-1 = 7    第四层空白:最高层-当前层
  *********         第五层个数:5*2-1 = 9    第五层空白:最高层-当前层
 ***********        第n层个数: n*2-1 = 2n-1 第n层空白: 最高层-n层
*/
function pyramid(level, symbol) {
var level = (typeof level == 'undefined') ? 5 : level;
var symbol = (typeof symbol == 'undefined') ? '*' : symbol;
var data = "";
var subLoopCount = 0;
var space = " ";
for (var i=1; i<=level; i++) {
symbolCount = i*2-1;                  // 当前层星个数
spaceCount = level-i;                 // 当前层空白数
subLoopCount = symbolCount + spaceCount;                  // 当前层循环的次数
for (var j=1; j<=subLoopCount; j++) {
if (j <= spaceCount) {                                             // 如果j的值小于等于空白数量时赋加空白
data += space;
} else {// 否则赋加星
data += symbol;
}
}
data += '<br />';                                                                  // 当前层输出换行符
}
return data;
}


/**  
 ***********            第n层个数: n*2-1 = 2n-1 第n层空白:最高层-n层
  *********             第五层个数:5*2-1 = 9第五层空白:最高层-当前层
   *******              第四层个数:4*2-1 = 7第四层空白:最高层-当前层
    *****               第三层个数:3*2-1 = 5第三层空白:最高层-当前层
     ***                第二层个数:2*2-1 = 3第二层空白:最高层-当前层
      *                 第一层个数:1*2-1 = 1第一层空白:最高层-当前层
*/
function pyramidReverse(level, symbol) {
var level = (typeof level == 'undefined') ? 5 : level;
var symbol = (typeof symbol == 'undefined') ? '*' : symbol;
var data = "";
var subLoopCount = 0;
var space = " ";
for (var i=level; i>=1; i--) {
symbolCount = i*2-1;
spaceCount = level-i;
subLoopCount = symbolCount + spaceCount;
for (var j=1; j<=subLoopCount; j++) {
if (j <= spaceCount) {
data += space;
} else {
data += symbol;
}
}
data += '<br />';
}
return data;
}



/**
      *                 第一层个数:1*2-1 = 1第一层空白:最高层-当前层
     * *                第二层个数:2*2-1 = 3第二层空白:最高层-当前层
    *   *               第三层个数:3*2-1 = 5第三层空白:最高层-当前层
   *     *              第四层个数:4*2-1 = 7第四层空白:最高层-当前层
  *       *             第五层个数:5*2-1 = 9 第五层空白:最高层-当前层
 * * * * * *            第n层个数: n*2-1 = 2n-1 第n层空白:最高层-n层

*/
function hollowPyramid(level, symbol) {
var level = (typeof level == 'undefined') ? 5 : level;
var symbol = (typeof symbol == 'undefined') ? '*' : symbol;
var data = "";
var subLoopCount = 0;
var space = " ";
for (var i=1; i<=level; i++) {
symbolCount = i*2-1;
spaceCount = level-i;
subLoopCount = symbolCount + spaceCount;
for (var j=0; j<subLoopCount; j++) {
if (j < spaceCount) {
data += space;
} else {
if (j==spaceCount || j==(subLoopCount-1) || i==level) {
if (i==level && j%2) {
data += space;
} else {
data += symbol;
}
} else {
data += space;
}
}
}
data += '<br />';// 当前层输出换行符
}
return data;
}


function hollowPyramidReverse(level, symbol) {
var level = (typeof level == 'undefined') ? 5 : level;
var symbol = (typeof symbol == 'undefined') ? '*' : symbol;
var data = "";
var subLoopCount = 0;
var space = " ";
for (var i=level; i>=1; i--) {
symbolCount = i*2-1;
spaceCount = level-i;
subLoopCount = symbolCount + spaceCount;
for (var j=0; j<subLoopCount; j++) {
if (j < spaceCount) {
data += space;
} else { 
if (j==spaceCount || j==(subLoopCount-1) || i==level) {
if (i==level && j%2) {
data += space;
} else {
data += symbol;
}
} else {
data += space;
}
}
}
data += '<br />';// 当前层输出换行符
}
return data;
}


function topBottom(level, symbol) {
var level = (typeof level == 'undefined') ? 5 : level;
var symbol = (typeof symbol == 'undefined') ? '*' : symbol;
var data = "";
var subLoopCount = 0;
var space = " ";
for (var i=1; i<=level; i++) {
symbolCount = i*2-1;// 当前层星个数
spaceCount = level-i;// 当前层空白数
subLoopCount = symbolCount + spaceCount;// 当前层循环的次数
for (var j=0; j<subLoopCount; j++) {
if (j < spaceCount) {// 如果j的值小于等于空白数量时赋加空白
data += space;
} else { 
if (j==spaceCount || j==(subLoopCount-1) || i==level) {
if (i==level && j%2) {
data += space;
} else {
data += symbol;
}
} else {
data += space;
}
}
}
data += '<br />';// 当前层输出换行符
}
for (var i=level-1; i>=1; i--) {
symbolCount = i*2-1;// 当前层星个数
spaceCount = level-i;// 当前层空白数
subLoopCount = symbolCount + spaceCount;// 当前层循环的次数
for (var j=0; j<subLoopCount; j++) {
if (j < spaceCount) {// 如果j的值小于等于空白数量时赋加空白
data += space;
} else {
if (j==spaceCount || j==(subLoopCount-1) || i==level) {
if (i==level && j%2) {
data += space;
} else {
data += symbol;
}
} else {
data += space;
}
}
}
data += '<br />';// 当前层输出换行符
}
return data;
}

function echo(data) {
document.write(data + '<hr />');
}
window.onload = function() {
echo(pyramid(9));
echo(hollowPyramid(7));
echo(pyramidReverse(8));
echo(hollowPyramidReverse(6));
echo(topBottom(5));
}
</script>
</body>
</html>

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值