Python练习(18)杨辉三角-难

根据输入行数,打印出杨辉三角,如图所示。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

  • 分析

开始想用二维数组表示,但是这是一个下三角矩阵,上三角是空的,但是二维数组无法输出空,不满足。
想着用一个列表表示,规律是,每行的第i个元素,等于上一行的第i个与第i-1个元素的和。但是不用二维数组的话,怎么表示上一行元素呢?

  • 代码

      def yang(floor):
      now = []
      for x in xrange(floor):
          now.append(1)
          for index in xrange(len(now) - 2,0,-1):
              now[index] = now[index - 1] + now[index]
          print now
      yang(5)
    
    • 总结
      迭代产生每一行元素
      用迭代方法,可以求出每一行新的元素,关系就是now[index] = now[index - 1] + now[index];
      索引要从大到小进行迭代,可以试一下如果变成了从小到大:in xrange(1,len(now)-1)那么结果就会变成:
      在这里插入图片描述
      那是因为迭代的时候要用到index-1,也就是小索引,如果每次小索引先更新的话,迭代产生大索引的时候就会使用刚刚产生的小索引,引用的就不再是上一行的元素而是本行的index-1元素了;

      另外,保持其他元素不变又要使每一行自动增加一个元素,a.append(1)很巧妙。
      参考:https://blog.csdn.net/u010019717/article/details/51450965#3-杨辉三角-易
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值