递归与变量作用域

递归与变量作用域

ID:39727328

大小:364.50 KB

页数:40页

时间:2019-07-10

递归与变量作用域_第1页
递归与变量作用域_第2页
递归与变量作用域_第3页
递归与变量作用域_第4页
递归与变量作用域_第5页
资源描述:

《递归与变量作用域》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、上节课复习知识要点1、过程的调用sub过程调用function过程调用调用其他模块中的过程2、参数的传递形参与实参按值传递参数按地址传递参数数组参数对象参数7.5递归过程(难点)1.递归的概念在程序中调用一子过程,而在子过程中又调用另外的子过程,这种程序结构称为过程的嵌套。过程的嵌套调用执行过程如下图:过程的嵌套调用如果在嵌套调用的过程中调用的是过程自身,这种过程也叫递归过程。递归是一种十分有用的程序设计技术。由于很多的数学模型和算法设计方法本来就是递归的。比如:求阶乘,求指数等。用递归过程描述它们比用非递归方

2、法简洁易读,可理解性好,算法的正确性证明也比较容易2.递归算法的结构递归算法的表达式通常由一个递归式和一个初始(或边界)条件式组成。例如:求N!1,当n=0或n=1时n!=n*(n-1)!,当n>1时递归式初始条件式裴波拉契数列1n=1F(n)=1n=2F(n-2)+F(n-1)n≥33.(重点)递归算法的执行过程分析—以阶乘为例PrivateFunctionfact(ByValnAsInteger)AsLongIfn=0Orn=1Thenfact=1Elsefact=n*fact(n-1)EndIfEndFu

3、nction初始条件式递归式调用阶乘的程序PrivateSubForm_Click()DimNasInteger,FasLongN=InputBox(“输入一个正整数”)F=fact(N)PrintN;”!=“;FEndSubFact(3)IfN=1thenFact=1ElseFact=3*Fact(3-1)EndIfEndFunctionFact(2)IfN=1thenFact=1ElseFact=2*Fact(2-1)EndIfEndFunctionFact(1)IfN=1thenFact=1ElseFac

4、t=1*Fact(1-1)EndIfEndFunctionFact(3)Fact(2)Fact(1)练一练:1PrivateFunctionf(ByValnAsInteger)AsLongIfn=0Orn=1Thenf=1Elsef=f(n-2)+f(n-1)EndIfPrintfEndFunction主调程序中:x=f(3)窗体打印几行,每行结果是什么?11123PrivateSubCommand1_Click()DimnAsIntegern=1Calldg(n)EndSubPrivateSubdg(nAsI

5、nteger)Ifn>3ThenExitSubElsedg(n+1)EndIfprintnEndSub321练一练:2课堂练习:题目:求数列前n项之和。数列表达式为0n=1F(n)=1n=22F(n-1)-F(n-2)n≥3PrivateFunctionf(nAsInteger)AsLongIfn=1Thenf=0ElseIfn=2Thenf=1Elsef=2*f(n-1)-f(n-2)EndIfEndFunctionPrivateSubCommand1_Click()Dimn%,i%,s%n=Val(Text

6、1.Text)Fori=1Tons=s+f(i)NextiText2.Text=Str(s)EndSub4.无限递归PrivateSubCommand1_Click()DimnAsIntegern=1Calldg(n)EndSubPrivateSubdg(nAsInteger)calldg(n+1)EndSubPrivateSubCommand1_Click()DimnAsIntegern=1Calldg(n)EndSubPrivateSubdg(nAsInteger)Ifn>10ThenExitSubElse

7、dg(n+1)EndIfEndSubPrivateSubCommand1_Click()DimnAsIntegern=1Calldg(n)EndSubPrivateSubdg(nAsInteger)printnIfn>3ThenExitSubElsedg(n+1)EndIfEndSubPrivateSubCommand1_Click()DimnAsIntegern=1Calldg(n)EndSubPrivateSubdg(nAsInteger)Ifn>3ThenExitSubElsedg(n+1)EndIfpr

8、intnEndSub递归真题实例OptionExplicitPrivateSubForm_Click()DimaAsIntegera=2:Callsub1(a)EndSubPrivateSubsub1(xAsInteger)x=x*2+1Ifx<10ThenCallsub1(x)EndIfx=x*2+1:PrintxEndSub2347PrivateSubCommand1_Click(

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

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

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