- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六课 递归程序正确性证明
第七章程序设计方法学基本理论 ——递归程序的正确性证明;本课的内容; 递归是常用的编程技术,其基本思想是“自己调用自己”。
数学上最常见、最简单的递归问题就是自然数的阶乘。
n=1 n! = 1;
n1 n! = n * (n-1)!;
适合用递归方法求解的问题
有一个初始状态
后续的情况可由前面的状态推出
如Fibonacci数列
F1 = F2 = 1;
Fn = Fn-1 + Fn-2 (n=3);递归程序概述(2/2);递归程序的一种模型;递归程序的一种模型;递归程序的例子…;递归程序的例子…;例3 Fibonacci函数
φ(x)?if x=0 then 0
else if x=1 then 1
else φ(x-1) + φ(x-2)
其中,x为非负整数
我们有
φ(0)=0
φ(1)=1
φ(2)= φ(1)+ φ(0)=0+1=1
φ(3)= φ(2)+ φ(1)=1+1=2
φ(4)= φ(3)+ φ(2)=2+1=3
φ(5)= φ(4)+ φ(3)=3+2=5
…
;例4 计算xy
利用下述公式不难编出相应的递归程序
F(x,y)= xy=
F(x,y)=1 若y=0
F(x,y)=(x*x)y/2 若y为偶数
F(x,y)=xy-1*x 若y为奇数
F(x,y)?if y=0 then 1
else if even(y) then F(x*x,y/2)
else F(x,y-1)*x
其中,x 为正实数;y为非负整数
例如:F(4,3)=F(4,2)*4=F(16,1)*4
=F(16,0)*64=64 ;例5 McCarthy91函数
M(x)? if x100 then x-10
else M(M(x+11))
其中,x为任意整数。
对于x=105,有M(105)=95,
x=99,其计算过程为
M(99)=M(M(110)) =M(100) =M(M(111))=M(101)=91
可以证明,对于任意整数x
M(x)= x-10 x100
91 x=100
值得注意的是,这是具有二重性递归的递归程序
;(1) 假定应先计算A(1,1),
然后再计算外层的递归调用
A(1,2) =A(0, A(1,1))
=A(0,A(0,A(1,0)))
=A(0,A(0,A(0,1)))
= A(0,A(0,2))
= A(0,3)
=4;递归计算的计算规则;例7F(x1,x2) ? if x1=0 then 0
else F(0,F(x1,x2))
其中,(x1,x2) 是任意非负整数对
我们采用两种不同的计算规则来计算F(1,2)
1:规定先计算F的最外层调用
F(1,2)=F(0,F(1,2))=0 (因x1=0)
2:规定先计算F的最内层调用
F(1,2)= F(0,F(1,2)) (因x1?0)
= F(0,F(0,F(1,2)))= (因对F的最内层调用有x1?0)
=F(0,F(0,F(0,F(1,2))))
=…..
对于第一种计算规则,F(1,2)的计算过程终止,且F(1,2)=0;
但对第二种计算规则,
F(1,2)的计算过程却永不终止,因而F(1,2)无定义。;上述讨论表明:
(1)??递归程序可以采用不同的计算规则来进行计算;
(2)??采用不同的计算规则来计算递归程序时,对相同的变元,计算过程可能终止,也可能不终止;
(3)??如果对于不同的计算规则,相应的递归程序(对相同的自变元)的计算过程都终止,则它们所得的结果一定相同;
(4)?? 在(3)的情况下,因为计算过程不同,所以虽然得到的结果相同,但其效率(计算时间和存储量)却可能差别大。;总之,在递归程序的执行过程中,计算规则的选取是很重要的。本章及后面的章节中,将统一规定:
采用”最左,最内”的计算规则,即在计算过程中,总是先计算最内层的F中最左的一个。
例如,在例6中,计算A(1,2)的第一种计算顺序就是按”最左,最内”的计算规则进行的。但在例7中,按”最左,最内”的计算规则去计算F(1,2)却是不终止的,故不能认为F(1,2)=0.
虽然”最左,最内”的规则未必是最佳的,但现今具有处理递归调用功能 的程序设计语言大都采用这种计算规则。;采用不同计算规则结果不同的例子;简化的LISP程序;原子和表;基本函数
您可能关注的文档
- 第六章 计划、总结写作.ppt
- 第六章 CAN技术规范与其在汽车中应用.ppt
- 第六章 音乐实践美学特征.ppt
- 第六次全国人口普查PPT摸底教程.ppt
- 第六章 代谢网络定量分析.ppt
- 第六章 企业经济活动日常会计记录.ppt
- 第六章 危险化学品危害防护.ppt
- 第六章 原油脱盐脱水.ppt
- 第六章 合同履行原则.ppt
- 第六章 审美本质.ppt
- 2025年江苏省常州市武进区文化服务中心招考工作人员考前自测高频考点模拟试题及答案详解1套.docx
- 2025年江西省上饶市横峰县派出所招聘协(辅)警6人考前自测高频考点模拟试题及答案详解1套.docx
- 2025年江苏省连云港市新浦区事业单位招聘考前自测高频考点模拟试题附答案详解.docx
- 2025年江苏省盐城市建湖县发展和财政局招聘编外人员考前自测高频考点模拟试题含答案详解.docx
- 2025年江苏省宿迁市泗阳县事业单位招聘考前自测高频考点模拟试题及答案详解1套.docx
- 2025年江西省吉安市吉水县发展和财政局招聘编外人员考前自测高频考点模拟试题含答案详解.docx
- 2025年江西省九江市永修县派出所招聘协(辅)警6人考前自测高频考点模拟试题附答案详解.docx
- 2025年江西省南昌市东湖区自然资源局招聘考前自测高频考点模拟试题含答案详解.docx
- 2025年江苏省连云港市连云区供销合作社招聘2人考前自测高频考点模拟试题附答案详解.docx
- 2025年江苏省无锡市惠山区发展和财政局招聘编外人员考前自测高频考点模拟试题含答案详解.docx
最近下载
- 八项规定严格禁止的财务行为八十条.doc VIP
- 中小学心理健康教育《我的情绪我做主》PPT课件.pptx
- 2025年辽宁省大连市中考数学一模试卷含答案.pptx VIP
- 厂房消防施工方案.docx VIP
- 年产300吨头孢拉定原料药车间的工艺设计(毕业论文).doc
- 【教学课件】早春呈水部张十八员外示范课件.pptx
- JB_T 11270-2024《立体仓库组合式钢结构货架技术规范》.pdf
- 10J301:地下建筑防水构造.docx VIP
- 基于STM32单片机的高精度超声波测距系统的设计.docx
- 夢の歩みを見上げて(仰望梦的步伐《樱之诗 -在樱花之森上飞舞-》钢琴谱钢琴简谱 数字谱 钢琴双手简谱.pdf VIP
文档评论(0)