递归算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
End function
当n=3时
递归算法的基本思想是把规模较大的、较难解决的问题变 成规模较小的、容易解决的同一问题,规模较小的问题又 变成规模更小的问题,当问题小到一定程度时,可以直接 得出它的解,从而得到原来问题的解。即采用“大事化小、 小事化了”的基本思想。
y=jc(3)
jc=3*jc(2)
jc=2*jc(1) jc=1
递归算法实现的要点 递归调用必须是有限制的,有限才有意义。构成递归的必须满足以下条件:
(1)有明确的结束递归的边界条件(又称终止条件)以及结束时的边界值;通过条 件语句(If语句)来实现
(2)函数的描述中包含其本身,即能用递归形式表示,且递归终止条件的发展。
Function jc(n as integer) as integer
Else
调用自身
f=f(n -1) + 2
End if
End Function
• 递归算法是vb程序语言设计中的一种重要方法,它使许多复杂的问题变
得简答,容易解决。
• 递归算法不涉及高深数学知识,只要建立起递归的概念,深入了解递归的
过程也会相对变得容易
递归实例
来自百度文库数学中的正整数阶乘问题
例如:
5!=5*4*3*2*1=5*4! 4!=4*3*2*1=4*3! 3!=3*2*1=3*2! 2!=2*1=2*1! 1!=1 0 ! =1
递归算法
递归现象
两面镜子中间的你,产生“像中像”,这就是一种递归现象
Vb中的递归:在定义一个函数或者过程时出现调 用自身的成分,称之为递归
Function f(n As Integer) As Long
Text1.Text = Text1.Text + Str(n)
If n <=1 then
f=1
End function Private sub command1_click() Dim y as integer y=jc(3) Print y End sub
jc(3) 调用
=3*jc(2) jc(2) 调用
=3*2
=2*jc(1) jc(1)
=6
=2*1
=1
返回=2
返回
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
End function
对于任意一个整数n (n>1): n!=n*(n-1)!
递归函数的调用
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
If n <=1 then jc=1 else
边界条件 和边界值
jc=n*jc(n-1) End if
包含自身
End function
当n=3时
递归算法的基本思想是把规模较大的、较难解决的问题变 成规模较小的、容易解决的同一问题,规模较小的问题又 变成规模更小的问题,当问题小到一定程度时,可以直接 得出它的解,从而得到原来问题的解。即采用“大事化小、 小事化了”的基本思想。
y=jc(3)
jc=3*jc(2)
jc=2*jc(1) jc=1
递归算法实现的要点 递归调用必须是有限制的,有限才有意义。构成递归的必须满足以下条件:
(1)有明确的结束递归的边界条件(又称终止条件)以及结束时的边界值;通过条 件语句(If语句)来实现
(2)函数的描述中包含其本身,即能用递归形式表示,且递归终止条件的发展。
Function jc(n as integer) as integer
Else
调用自身
f=f(n -1) + 2
End if
End Function
• 递归算法是vb程序语言设计中的一种重要方法,它使许多复杂的问题变
得简答,容易解决。
• 递归算法不涉及高深数学知识,只要建立起递归的概念,深入了解递归的
过程也会相对变得容易
递归实例
来自百度文库数学中的正整数阶乘问题
例如:
5!=5*4*3*2*1=5*4! 4!=4*3*2*1=4*3! 3!=3*2*1=3*2! 2!=2*1=2*1! 1!=1 0 ! =1
递归算法
递归现象
两面镜子中间的你,产生“像中像”,这就是一种递归现象
Vb中的递归:在定义一个函数或者过程时出现调 用自身的成分,称之为递归
Function f(n As Integer) As Long
Text1.Text = Text1.Text + Str(n)
If n <=1 then
f=1
End function Private sub command1_click() Dim y as integer y=jc(3) Print y End sub
jc(3) 调用
=3*jc(2) jc(2) 调用
=3*2
=2*jc(1) jc(1)
=6
=2*1
=1
返回=2
返回
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
End function
对于任意一个整数n (n>1): n!=n*(n-1)!
递归函数的调用
Function jc(n as integer) as integer If n <=1 then jc=1 else jc=n*jc(n-1) End if
If n <=1 then jc=1 else
边界条件 和边界值
jc=n*jc(n-1) End if
包含自身
End function