第6章 重复结构典型算法.ppt

第6章 重复结构典型算法.ppt

ID:48771387

大小:276.50 KB

页数:28页

时间:2020-01-23

第6章 重复结构典型算法.ppt_第1页
第6章 重复结构典型算法.ppt_第2页
第6章 重复结构典型算法.ppt_第3页
第6章 重复结构典型算法.ppt_第4页
第6章 重复结构典型算法.ppt_第5页
资源描述:

《第6章 重复结构典型算法.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、6.9典型算法示例1递推法递推法的编程思路是:问题的共同特点是:前后项存在一定的关系,即后项可由前项推导出。第一步:设项号,找前后项关系;1,可直接由前项推出后项2,可直接利用项号推出当前项的值3,需要综合利用项号和前项推出后项第二步:构造重复结构;第三步:设定变量初始值。1例6.5编写求1-2+3-4+5-...-100的和程序。第一步:设定项号,定义变量,找前后项关系这是关键的一步。设定项号n=1234...sum=1-2+3-4+5-...–100存和前后项关系为n=n+1,比较简单。生成的数n

2、有正负号,且有规律:奇数为正,偶数为负,可用二选一if语句判别;这里定义一个变量s判别。第二步:构造重复结构求解这类题目,循环体总要执行多次。采用dowhile重复结构是很自然的。用其它重复结构,可行吗?2do{n=n+1;s=-s;sum=sum+s*n;}while(n<100);第三步:设置变量初值设置变量初值是保证正确计算出第一项值。十分明显,各变量的初值为:intn=0,sum=0,s=-1;第四步:静态检查跟踪三步左右,如果结果是正确的,一般情况下,可断定算法是正确的。3语句第一次循环第二

3、次循环第三次循环n=n+1;123s=-s1-11sum=sum+s*n;1-12第五步:编程通过上述分析,确定了数据结构,定义了有关变量和类型(因明显是整型,未作说明),完成了算法设计。接下来编程就是用C语言精确表述这一思维过程。/*求1-2+3-4+5-...-100的和chap6_5.c*/#includevoidmain(){intsum=0,n=0,s=-1;printf("***运行结果***");4do{n++;s=-s;sum+=s*n;}while(n<100)

4、;printf("1-2+3-4+...-100=%d",sum);}***运行结果***1-2+3-4+...-100=-50例6.6编写下述功能程序:求sinx=x-x3/3!+x5/5!-x7/7!+...的近似值,误差为1×10-8。5do{n++;s=-s;sum+=s*n;}while(n<100);printf("1-2+3-4+...-100=%d",sum);}***运行结果***1-2+3-4+...-100=-50例6.6编写下述功能程序:求sinx=x-x3/3!+x5

5、/5!-x7/7!+...的近似值,误差为1×10-8。6第一步:设定项号,定义变量,找前后项关系设定项号n=1234...sinx=x-x3/3!+x5/5!-x7/7!+...存sin函数值存x的幂xn存阶乘fact前后项关系比较复杂。从整体找前后项关系比较困难,分别找前后项的分子和分母的关系比较简便。前后项关系:分子xn=-xn*x*x分母fact=fact*(2*n-2)*(2*n-1)7第二步:构造重复结构求解这类题目,循环体总要执行多次(循环次数不确定),一般采用dowhile重复结构。d

6、o{n=n+1;xn=-xn*x*x;fact=fact*(2*n-2)*(2*n-1);sinx=sinx+xn/fact;}while(fabs(xn/fact)>1e-8);第三步:设置变量初值floatx;doublen=1,xn=x,fact=1,sinx=x;为保证精度,xn,fact,sinx取double型。为防止溢出,n也取double。8第四步:静态检查跟踪三步左右,如果结果正确,一般情况下,算法是正确的。语句第一次循环第二次循环第三次循环n=n+1;234xn=-xn*x*x;-

7、x3x3-x7fact=fact*(2*n-2)*(2*n-1);3!5!7!sinx=sinx+xn/fact;x-x3/3!x-x3/3!+x5/5!x-x3/3!+x5/5!-x7/7!第五步:编程/*求sinx=x-x3/3!+x5/5!-x7/7!+...的近似值chap6_7.c*/#include#include#defineEPS1e-8/*符号常量,误差*/9voidmain(){floatx;doublen=1,xn,fact=1,sinx;pri

8、ntf("***运行结果***");printf("输入x:");scanf("%f",&x);sinx=x;xn=x;/*不在变量定义时置初值,为什么?*/do{n=n+1;xn=-xn*x*x;fact=fact*(2*n-2)*(2*n-1);sinx=sinx+xn/fact;}while(fabs(xn/fact)>EPS);printf("递推法sin%0.4f=%0.8f",x,sinx);printf("调库函数sin%0.4f=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。