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

1 引言上一篇文章的主要贡献在于将一次性的累加工作转化为分步的累加,进而实现整体的求和。根据本系列的第(2)篇文章,得出结论,定义a1到a100这100个变量是没有必要的。那么如何进一步减少变量定义的个数呢?本文一起来探讨如何做到这一点。2 问题描述1到100求和问题几乎是所有编程语言初学者都会接触到的一个问题,其定义如下,编程实现:1 + 2+ ··· + 100 = ?限制条件:使用尽可能少的变量。3 问题分析算法 3仅依赖变量定义和加法运算符的1到100求和(改进版)sum = 0a1 = 1sum = sum + a1a2 = 2sum = sum + a2···a100 = 100sum = sum +a100(上面省略号并非程序语言关键词,而是由于空间有限故省略)要想改进算法,前提是要对其进行认真的分析,发现规律。通过对算法3的分析,可以发现如下的规律:ai = isum = sum + ai(i = 1,2,···,100)这个规律是否可以做进一步的优化呢?通过观察发现,ai=i这行代码没有改变i的值,ai和i之间存在冗余,可以直接用i来替代,改进后的模式如下所示:sum = sum + ii = 1,2,···,100经过优化后的模式比之前更简洁和直观。对于i从1到100,这样的模式需要重复一百次。如何设计算法让这样的模式能够重复执行100次成为下一步分析的关键。这样的一个问题经过抽象后就是,对于编程语言而言,如何实现一个有限长度固定模式的重复。其中模式存在两种情况,其一是模式是常量,其二是模式中有变化的地方。举例如下:(1) 重复打印100次“hello,world”字符串。这种模式中不存在变化的地方,都为常量,每一次的重复都是一成不变的。(2) 重复打印i,其中i=1,2,···,100。这种情况下,每一次的重复,对于i都是变化的。循环结构是解决这一重复问题的利器。一般情况下编程语言会提供for、while和do...while三种循环结构,其中for是最基础同时也是最重要的结构。sum = 0for i = 1 to 100:sum = sum + i重复执行sum = sum + i 共计100次,而且每一次执行的时候,改变i的值,如第1次执行的时候,i=1,第2次执行的时候,i=2,以此类推。这样就完成了模式的重复。至此,1到100求和问题,只使用了i和sum两个变量就完成了求和。1到100求和是编程初学者都会接触到的一个问题,选择这样的一个问题作为分析的对象,重点不在于如何解决这个问题,如何编程实现1到100求和,而是一步一步严谨的分析过程。试想假如编程语言没有提供循环结构,你该如何解决这个问题呢?下周将发布《1到100求和学算法之循环的秘密》系列的最后一篇文章,将全面总结分析流程和关键问题,欢迎持续关注。

(0)

相关推荐

  • HCIA-AI华为认证AI工程师在线课程题目及参考答案

    HCIA-AI华为认证AI工程师在线课程题目及参考答案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 100种学楷书口诀

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