打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
1到100求和学算法之循环的秘密(4)
1 引言
上一篇文章的主要贡献在于将一次性的累加工作转化为分步的累加,进而实现整体的求和。根据本系列的第(2)篇文章,得出结论,定义a1到a100这100个变量是没有必要的。那么如何进一步减少变量定义的个数呢?本文一起来探讨如何做到这一点。
2 问题描述
1到100求和问题几乎是所有编程语言初学者都会接触到的一个问题,其定义如下,编程实现:
1 + 2+ ··· + 100 = ?
限制条件:使用尽可能少的变量。
3 问题分析
算法 3仅依赖变量定义和加法运算符的1到100求和(改进版)
sum = 0
a1 = 1
sum = sum + a1
a2 = 2
sum = sum + a2
···
a100 = 100
sum = sum +a100
(上面省略号并非程序语言关键词,而是由于空间有限故省略)
要想改进算法,前提是要对其进行认真的分析,发现规律。通过对算法3的分析,可以发现如下的规律:
ai = i
sum = sum + ai
(i = 1,2,···,100)
这个规律是否可以做进一步的优化呢?通过观察发现,ai=i这行代码没有改变i的值,ai和i之间存在冗余,可以直接用i来替代,改进后的模式如下所示:
sum = sum + i
i = 1,2,···,100
经过优化后的模式比之前更简洁和直观。对于i从1到100,这样的模式需要重复一百次。如何设计算法让这样的模式能够重复执行100次成为下一步分析的关键。
这样的一个问题经过抽象后就是,对于编程语言而言,如何实现一个有限长度固定模式的重复。其中模式存在两种情况,其一是模式是常量,其二是模式中有变化的地方。举例如下:
(1) 重复打印100次“hello,world”字符串。这种模式中不存在变化的地方,都为常量,每一次的重复都是一成不变的。
(2) 重复打印i,其中i=1,2,···,100。这种情况下,每一次的重复,对于i都是变化的。
循环结构是解决这一重复问题的利器。一般情况下编程语言会提供for、while和do...while三种循环结构,其中for是最基础同时也是最重要的结构。
sum = 0
for 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求和学算法之循环的秘密》系列的最后一篇文章,将全面总结分析流程和关键问题,欢迎持续关注。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python自学教程第2期-求100以内奇数和
VB编程求解1^4 2^4 ... N^4之和
信息学奥赛第六讲:循环结构程序设计
C语言中for循环语句的应用研究
C语言基础:以实例跟我学循环结构之for+break+continue用法
(9)循环结构例题评讲 3
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服