·48- 中学数学月刊 2009年第6期
对一个算法I闭题的思考
韩泽齐 (陕西省西安航天中学高--(1)班710100)指导老师 王鹏飞
。1问题提出
在北师大版《数学·必修3》第二章“算法”第
113页习题2—3的A组题中,第6题:
使用基本语句写一个算法,要求输入三角形
的三条边长,输出三角形面积.(若用a,6,c表示
三角形的三条边长,则三角形面积S=
/页Fi五刁=巧灭丁=万,其中z=百1(口+6+c))
厶
教材给出的算法设计如下,记为算法1:
INPUTa,b,c
IFa+b—f>0THEN
IFb+c—a>0THEN
IFa+c—b>0THEN
1
z一÷(n+b+c)
厶
PRINTS=以可=万万=万丌=万
E15E
PRINT“can’t”
ENDIF
ELSE
PRINT“can’t”
ENDIF
ELSE
PRINT“carl’t”
ENDIF
这种算法与条件语句结合紧密,适合刚刚学
完条件语句的学生编写,我们也很容易想到这种
算法设计.但是这种算法有两个缺点:(1)占用时
间多;(2)多重条件语句,设计复杂.
2 算法改进
在这个算法中,如何判断a,6,c可以围成三
角形是一个重要步骤.我们知道,三角形的任意两
边之和大于第三边,通过这种判断,我们就可以知
道是否可以围成三角形.但如何判断是一个关键
问题,因为判断方法决定后面的运算的繁简程度.
因此我们用联结词AND将算法1简化得算法2:
INPUT口,b,c
IFa+b—f>0ANDa+c—b>0
ANDb+c—n>0THEN
1
z一去(口+b+c)
厶
PRINTS=/及丁二i叉丁=历叉丁二万
E15E
PRINT“can’t’’
ENDIF
这种算法将三个IF语句变成了一个,使程序
语句大大简化.可是我们依然看到,判断能否围成
三角形和计算是分开的,这种算法也浪费资源,没
有从本质上简化运算,而且AND语句并不好用.
为此,我们设想能否将计算与判断合并,从而得到
算法3:
INPUTa,b,c
1
Z=去(n+b+f)
厶
N=Z*(Z—n)*(Z一6)*(Z—c)
IFN>0THEN
PRINTS=俑
ELSE
PRINT“can't”
ENDIF
为了说明算法3的合理性,我们给出如下算
法
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
:
(1)如果n,b,c可以围成三角形,则z>o,z
—a>0,Z—b>0,Z—c>0,所以N>O,故S
一周.
(2)如果a,byc围不成三角形,则“有一条边
大于等于另外两边之和”,不妨设a≥b+c,则推
出a≥6,a≥c.于是6+c一口≤O,a+c--b>0,
口+b—c>0.从而有
1
卜一a=丢(6+c一口)≤o净卜一n≤o;
厶
1
z—b=去(n+c一6)>o净z—b>01
厶
1
z—c=去(6+b—c)>.o净z—c>0;
厶
所以N≤O.
由此可以得出,当N>O时,可以围成三角
万方数据
2009年第6期 中学数学月刊 ·49·
形;当N≤0时,围不成三角形.
算法3的优越性在于判断快速(一次性),运
算量小(在判断时就已经做了第一步运算).
3 算法改进的联想
在上述算法改进中,我们“程序化”地使用了
判断语句,又将运算和判断融合,简化算法.在改
进时,首先注意到了算法的合理性,然后才是简洁
性.这不由使我们又联想到教材习题2—3,A组题
第7题:用基本语句写一个算法,要求输出1~
900中既能被3整除又除以5余1的数.
我们给出如下三种算法设计:
算法1
FOR咒一1TO900
IFnmod3=0THEN
IF(咒一1)mod5—0THEN
PRINT咒
ELSE
ENDIF
ELSE
ENDIF
算法2
FOR,z一1TO300
IF(3*咒一1)mod5—0THEN
PRINT3n
EISE
ENDIF
算法3:
INPUT咒一6
DO
PRINT咒
咒一竹+15
LOOPWHILE咒≤900
可以看出,算法1直观地表达了题目;算法2用
一个K)R语句简化表达,运算量有了一定减少,语
句长度缩短;算法3用DO语句,使算法更简洁.
4 算法学习的体会
算法设计,就像走路要走最近的路一样,也要
求“简单明了抓重点”,越简便,越容易于上机,就
是越好的算法.俗话说“货比三家”,我们在学习
时,不能放过小问题,因为可以以小见大,这类题
目更多地提供给我们一种思维锻炼.另外,不迷
信、不盲从,不要人云亦云,我们要用事实说话.解
题时,好的算法不仅节约时间、节约空间,而且可
以提高思维.算法的基础是“程序化”,亮点是“简
化”.算法改良使我们的思维更加有效、准确.
通过对教材习题的研究,使我们迸一步体验
到了算法思想的本质——程序化、简约化.怎样
使自己的算法设计更有条理、更简捷,怎样使我们
学会更具条理地思考问题、分析问题和解决问题,
应是每位同学在算法学习中追求的目标.
围 围
一道高考数列题的简解
李枝团 (重庆市第36中学400026)
2008年全国高考江西卷数学(文科)第19
题:
等差数列{n。)的各项均为正数,口。一3,前咒
项和为S。;{bn)为等比数列,b1—1,且b2S2—64,
63S3=960.
(I)求a。一5玩;
(Ⅱ)求击+圭+⋯+妾.
在有关资料中,对本题的求解均以等差数列
的公差d和等比数列的公比q为未知元,列出关
于d,q的二元三次方程组,解答颇为复杂.若瞄准
以“Sz”,“q”或“az”分别为元,可简化计算步骤,
减少计算量,或应用公式轻易得解,下面利用这种
思路求解此题(I).
解法1 因为等差数列{a。)中,a。=3,等比
数列{b。)中,b1—1,易知b3=b;,由62S2—64,
b3S3—960=>b3·3a2=960=>b3·(S2-3)=320.
所以杂嵩=篆≥焉=警净
s2一S2—3可一丁‘
万方数据