Skip to content

Latest commit

 

History

History
122 lines (79 loc) · 2.54 KB

174-529781-[趣味拓展]循环优化.sy.md

File metadata and controls

122 lines (79 loc) · 2.54 KB
show version enable_checker
step
1.0
true

二重循环

回忆

  • 上次研究了颜色的规律输出
  • 其实在规律的基础上加上random就是紊乱
  • 有序和无序其实是相生的
  • 二重循环是否可以优化呢?🤔

图片描述

  • 我们来看这个问题

完全平方数

  • 我们想计算200以内所有的完全平方数
  • 什么是完全平方数呢?

图片描述

  • 这个怎么计算呢?
    • 不要翻页尝试自己做出来

循环起来

图片描述

  • 我们可以尝试
  • 从1-200
  • 每个数字测试一下
  • 判断他是不是一个完全平方数
  • 那怎么进行判断呢?

判断

图片描述

  • 这个运行结果正确么?

结果

图片描述

  • 结果是正确的

  • 可以优化么?

  • 能否更合理呢?

尝试优化代码

  • 这样子确实效率更高
for num in range(28):
	print(num**2)
  • 但是为什么是range(28)呢?
  • 需要寻找更合适的边界

观察

图片描述

  • 导入math函数

    • 计算200的平方根
  • 然后编写代码

图片描述

  • 可以再优化吗?
  • 不用math包可以吗?

优化

  • 原来是
    • 穷举所有的数
    • 分析数字是否为平方数

图片描述

  • 现在是

    • 遍历基础数字
    • 分析平方是否小于200
  • 显然现在的这个一重循环效率更高

  • 从时间上空间上都更合理

  • 这让我想到一句python之禅

禅意

  • 最长的这句

图片描述

  • (解决问题)应该有,最好只有,一种明显的方法。

总结

  • 这次我们算了完全平方数
  • 有两种方法
    • 遍历平方数
    • 遍历平方根
  • 经过比较
    • 一重循环不一定比二重循环差
    • 算法确实是可以优化的
  • 优化之后
    • 时间和空间都能节省
    • 是很有意思的
  • 那还有比二重循环更复杂的循环么?🤔
  • 下次再说!👋

图片描述