JavaScript 打印星号三角形

本文介绍了如何用JavaScript绘制星号组成的三角形,通过解析规律得出公式y=2i-1和z=x-i,并探讨了理解公式背后逻辑的重要性,以及在代码实现中如何优化,包括简单的代码实现和更高效的O(log2(n))复杂度的优化方案。
摘要由CSDN通过智能技术生成

打印由星号组成的x层三角形,如下图:

看规律, 设三角层数为x,每层星星数为y,每层开头空格数为z

那么,对于第i层:

  1. y 为1,3,5,7,9...奇数。光知道奇数你并不知道印象中的公式是2n-1还是2n+1更哪个更适合这里, 那我们一步步来, 这里隔离变与不变, 1是最开始的基准, 3和1的关系是+2, 5和3的关系是+2... 因此每次加2,即1, 1+2, 1+2+2, 1+2+2+2...注意这里隔离变与不变, 数量不变的1, 和数量变化的2, 那么就看这个变化的2的数量和i的关系, 即0, 1, 2, 3...和1, 2, 3...的关系,这样才由题意得y = 1+(i-1)*2 = 2i-1;
  2. z 在最后一层为0,朝上依次增加1,共有x层,故最上层为x-1,第二层x-2, 第三层x-3, 因此z = x-i;

虽然很多时候这两个简单的变量之间的数量关系可以一眼看出, 但通常都是碰运气的不断尝试拼凑, 本着九年义务教育提供的数学素养, 我们应该可以从头推出这些式子, 并且有理有据, 而不是背下来.

个人最讨厌背了,除了3.1415926, 九九乘法表之类的, 爸妈的手机号... 其他时候是能不背就不背.

我们如果能掌握如何产生公式, 是不是就比直接背公式更容易记忆呢?短期看背的收益是高回报的, 无需思考, 提取就可以. 而理解就像计算机中的函数, 他们多了之后可以互相利用, 组合成更复杂的功能. 而背除了诗词能假以时日身临其境,有所感慨可以陶冶情操外, 很多时候他们真的除了提取数据, 毫无发展和其他有趣的事情联系起来从而有更大的用处.

当然理解是要付出代价的, 即理解的时间, 和从原数据推演计算的时间, 因此重要的或者有趣的才要去理解, 如果是一次性使用的信息, 比如学校旁的小面馆说13号担担面好了~13号在哪~, 这样的信息还是直接背下来比较好, 当然你也可以想象背叛上帝的犹大, 借此把13记下来

而手机验证码的六位, 原先还要不断重复口念450893, 生怕有人跟我说话我又要切换应用重新记, 哈利路亚, 这种纯粹没有逻辑的死板的信息, 现在的输入法自带的信息提示, 不用切换到短信, 直接点一下就Ok了.

看, 越是死的东西, 越是会被机器+软件替换掉.

简易代码实现

const printTriangle = x => {
    for(let i=1; i<=x; i++) {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值