1到100求和学算法之循环的秘密(3)

1 引言上一篇文章分析了没有必要定义a1,a2,···,a100这100个变量,其根本原因在于定义的这些变量在程序运行期间,这些变量对应的内存单元没有发生任何的改变,其本质为常量。既然没有必要定义这么多的变量,那如何减少变量定义的个数呢?本文一起来探索实现这一目标的做法。2 问题描述1到100求和问题几乎是所有编程语言初学者都会接触到的一个问题,其定义如下,编程实现:1 + 2 + ··· + 100 = ?限制条件:使用尽可能少的变量。3 问题分析算法1两个整数的求和sum = 0a1 = 1a2 = 2sum = a1 + a2关于1到100求和问题,截至到目前,主要的工作有:首先介绍了两个整数的求和算法1,然后以此类推到100个整数的求和算法2,接着分析了没有必要定义a1到a100这100个变量。 算法2仅依赖变量定义和加法运算符的1到100的求和a1 = 1a2 = 2···a100 = 100sum = a1 + a2 + ··· +a100(上面两处省略号并非程序语言关键词,而是由于空间有限故省略)关于算法2,再做一些深入的分析,对其进行优化。首先定义变量sum用来保存最后的求和结果。注意这里定义的变量sum,意味着程序执行期间,sum的值会多次发生改变,最后一次改变后,得到的值就是最终的结果。算法2是一次性将a1到a100全部加到sum中,将一次性的行为变更为逐步累加的过程,即每一次加一个整数到sum中,这样每一次加法操作后,sum变量的值就会改变,符合变量的定义。从第一个整数开始,共执行100步操作,每次加一个整数,第100步执行加法完成后就得到最终的结果,如算法3所示。算法3仅依赖变量定义和加法运算符的1到100求和(改进版)sum = 0a1 = 1sum = sum + a1a2 = 2sum = sum + a2···a100 = 100sum = sum +a100(上面省略号并非程序语言关键词,而是由于空间有限故省略)从算法2到算法3,看似微小的变化,其体现的算法思想完全不一样。算法2是一次性的操作,而算法3是一次性的操作拆分成了很多微小的步骤,这体现了一种分解的思路,从而使得问题的理解更加深刻了。实现了这种分解之后,如何实现引言最初提出的减少变量定义的个数呢?主编:王楠岚责编 :Justin

(0)

相关推荐

  • 大大雷Python零基础课程第七节:函数

    https://m.toutiao.com/is/eHxD4oe/ 函数是组织好可以重复使用的一个代码块,能够在编程中有效地提高代码复用率.函数可以有参数,也可以没有参数, 函数的参数可以是任意数据类 ...

  • Python自学教程第2期-求100以内奇数和

    前言:Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它 ...

  • 1到100求和学算法之循环的秘密(4)

    1到100求和学算法之循环的秘密(4)

  • 1到100求和学算法之循环的秘密(2)

    1到100求和学算法之循环的秘密(2)

  • 1到100求和学算法之循环的秘密(1)

    1到100求和学算法之循环的秘密(1)

  • 算法|1到100求和学算法之无尽的递归

    引言递归作为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像.绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归.计算 ...

  • 1到100求和学算法之开篇

    Pascal之父尼古拉斯·沃斯因提出著名公式"算法+数据结构=程序"而荣获1984年计算机领域的最高奖项-图灵奖.通过这个公式,可以发现算法对于程序设计的重要性.然而算法思想的学习 ...

  • 100种学楷书口诀,经典实用,值得细细品鉴

    学书口诀楷书百法 第一法:十字在上横抗肩,竖笔上粗细下端,竖笔书写带撇意,位置写在中心线. 第二法:厂字作头横抗肩,横撇不连更美观,撇如柳叶中间宽,撇笔长写字舒展. 第三法:布字头部横笔长,先撇后横是 ...

  • 100种学楷书口诀,经典实用,值得细细品鉴!

    Ad 三希堂法帖(套装共20册 全新编排 御刻释文) 作者:[清]梁诗正 京东 学书口诀楷书百法 第一法:十字在上横抗肩,竖笔上粗细下端,竖笔书写带撇意,位置写在中心线. 第二法:厂字作头横抗肩,横撇 ...

  • 干货|理解机器学习必学算法条件随机场CRF

    第一时间获取价值内容 一.概率图模型 概率图模型又叫做马尔可夫随机场,是一个可以用无线图表示的联合概率分布.在这个无线图中结点表示随机变量,边表示两个随机变量依赖关系.给定一个概率分布及其无向图,首先 ...

  • 100种学楷书口诀

    学书口诀楷书百法 第一法:十字在上横抗肩,竖笔上粗细下端,竖笔书写带撇意,位置写在中心线. 第二法:厂字作头横抗肩,横撇不连更美观,撇如柳叶中间宽,撇笔长写字舒展. 第三法:布字头部横笔长,先撇后横是 ...