老师,请教一下

老师,请教一下

问题描述:

想到了三种倒金字塔的的写法,

但是在构造*的时候都得要增加一个变量l才行(正金字塔就不用)

怎么才能不增加额外的变量l写出倒金字塔呢?

而且感觉代码可读性一般,怎么优化好些?

​<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>综合算法</title>
</head>

<body>
<script>
var n = Number(prompt(''))
for (var i = 1, l = 0; i <= n; i++, l++) {
for (var j = 1; j <= i - 1; j++) {
document.write('&nbsp;')
}
for (var k = 1; k <= 2 * n - i - l; k++) {
document.write('*')
}
document.write('<br>')
}

var n = Number(prompt(''))
for (var i = 1, l = n; i <= n; i++, l--) {
for (var j = 1; j <= i - 1; j++) {
document.write('&nbsp;')
}
for (var k = 1; k <= n - i + l; k++) {
document.write('*')
}
document.write('<br>')
}

var n = Number(prompt(''))
for (var i = 1, l = 0; i <= n; i++, l++) {
for (var j = 1; j <= i - 1; j++) {
document.write('&nbsp;')
}
for (var k = 2 * n - i - l; k >= 1; k--) {
document.write('*')
}
document.write('<br>')
}
</script>
</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,可以将循环变量i的值初始化为n,让变量i从n开始递减,实现倒金字塔,参考代码如下:

http://img1.sycdn.imooc.com//climg/60b086f40952992a06590330.jpg

关于代码可读性:代码实现都是可以的,不需要优化,不过建议增加一些注释来解释代码中的变量以及每个for循环的作用,方便以后阅读。

祝学习愉快!

  • __Promise 提问者 #1

    没想到这种方法,为啥把i倒着遍历就行呢?

    ​可不可以理解成倒着遍历就相当于把正金字塔从后往前按每一行输出出来

    2021-05-28 16:31:05
  • 好帮手慕然然 回复 提问者 __Promise #2

    同学你好,可以这样理解的,其实就是把正金字塔中的内容,从后往前倒着输出,同学可以观察一下正金字塔和倒金字塔的实现代码(如图):主要区别在于循环变量i的初始值,i是递增还是递减,从而决定输出&nbsp;空格和*符号的数量。

    http://img1.sycdn.imooc.com//climg/60b0afdf098ae5be07560629.jpg

    祝学习愉快!

    2021-05-28 16:57:05
  • __Promise 提问者 回复 好帮手慕然然 #3

    明白了谢谢老师?

    2021-05-28 17:08:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师