Skip to content

Latest commit

 

History

History
133 lines (87 loc) · 2.79 KB

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

File metadata and controls

133 lines (87 loc) · 2.79 KB
show version enable_checker
step
1.0
true

二重循环

回忆

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

图片描述

  • 我们来看这个问题

完全平方数

  • 我们想计算200以内所有的完全平方数
    • 什么是完全平方数?
      • 本身为其他数字平方的数字
  • 怎么通过编程得到呢??

图片描述

  • 不要翻页尝试自己做出来

循环起来

  • 我们可以尝试
    • 从1-200
    • 每个数字测试一下
    • 判断他是不是一个完全平方数

图片描述

  • 那怎么进行判断呢?

判断

图片描述

  • 这个运行结果正确么?

结果

  • 结果是正确的
    • 但过程需要循环200遍
    • 没有必要循环那么多次

图片描述

  • 可以优化么?

尝试优化代码

  • 这样子确实效率更高
for num in range(200):
	if num**2 > 200:
		break
	print(num**2)
  • 结果也是正确的
    • 超200的时候
    • 就break了
    • 但每次都得判断

图片描述

  • 需要寻找更合适的边界

观察

图片描述

  • 导入math函数

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

图片描述

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

优化

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

图片描述

  • 现在是

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

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

  • 这让我想到一句python之禅

禅意

  • 最长的这句

图片描述

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

总结

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

图片描述