一、算法概述
定义:算法是指解决问题所采用的方法和步骤,是一系列解决问题的清晰指令。
算法要给出“如何做”过程中所包含的所有步骤,并用适当的方式把它准确地描述出来。
参考自:重庆大学出版社《初中信息技术》八年级上
描述方法:
- 自然语言(通俗易懂,易产生歧义)
- 流程图(形象直观、更易理解)
- 伪代码(更易转换为代码,不直观)
(一)算法的五个特征
- 确定性
算法要有一个清晰的起始步,表示处理问题的起点,且每一个步骤只能有一个确定的后继步骤。 - 可行性
每条规则必须是确定的、可行的。 - 有穷性
从而组成一个步骤的有限序列;要有一个终止步(序列的终止)表示问题得到解决或者不能得到解决。
例如:S=1+2+3+……+100+……+∞
S的答案无法求解 - 输入项和输出项
算法总是对数据进行加工处理,因此,算法的执行过程中通常要有数据的输入(0个或多个)和数据的输出(至少一个)的步骤。
(二)高斯求和对于五个算法特征的理解
- 计算这道题目的算法有限制范围,可以在有限时间内完成,这体现了算法的第一个特征——有穷性。
- 计算时可以用纸笔、算盘、运算器和计算机来完成,其计算的过程和方法是多样的,但结果是唯一的,这就是算法的可信性、确定性。
二、求解:S=1+2+3+……+100
(一)方法
- 首尾相加法
- 凑数法
1+100=101;2+99=101;3+98=101……,相加50次,得出最终答案。 - 顺序相加法
- 计算机算法
令S=0,使1<n<100,先执行n=n+S(1),再执行n=n+1(2);
n=1,S=0时,S=1; n=2,S=1时,S=3;
n=3,S=3时,S=6; n=4,S=6时,S=10;
(二)自然语言描述
自然语言描述算法 = 日常语言 + 数学符号
两个基本要素:初始状态、变化规律。
初始状态:S=0;i=1
S的变化规律:S新=S旧+i
i的变化规律为:i新=i旧+1
参考自:
- https://wenku.baidu.com/view/e3a1aea9370cba1aa8114431b90d6c85ed3a881c.html#
- https://wenku.baidu.com/view/fcb78041f68a6529647d27284b73f242336c31c6.html
(三)代码实现(for、迭代法)
基础代码一:
#CalarithmeticSequencesumV1
n=int(input("请问你加到哪个数为止:"))
s=0
i=1
for i in range(n+1):
s=s+i
i+=1
print("s的和为:",s)
运行结果:
请问你加到哪个数为止:100
s的和为: 5050
>>>
迭代法:
#CalarithmeticSequencesumV2
def Arithmetic(num):
if num==1:
return 1
else:
return Arithmetic(num-1)+num
def name(num):
if num==1:
return str(num)
else:
return name(num-1)+"+"+str(num)
def main():
print("S=",Name,"=",S)
n=int(input("请问你加到多少为止?"))
S=Arithmetic(n)
Name=name(n)
main()
运行结果:
=============== RESTART: D:/Aiyyin/CalarithmeticSequencesumV2.py ===============
请问你加到多少为止?50
S= 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50 = 1275
>>>
最后给大家推荐一部电影《测量世界》,讲述高斯的精彩人生。