《自定义函数及递归算法》由会员分享,可在线阅读,更多相关《自定义函数及递归算法(8页珍藏版)》请在金锄头文库上搜索。
1、自定义函数 及 递归算法自定义函数v用户自己编写的一段具有独立功能的子程序,可在主程 序中直接调用。VB内部函数:ABS()、INT()、RNDR=ABS(n)If n=0 thenR=n ElseR=-n End if如果有需要,用户可以自定义一个函数MAX(),用于求三个数中最大的那个数在主程序中可直接通过语句: S=MAX(a,b,c)使S获得a,b,c三个数中最大数的值语句格式及调用方法v语句格式Public|Private Function (参数列表) As 类型局部变量、变量定义语句组函数名称=返回值End Functionv如何在主程序中调用变量=函数名称(参数)说明:“”中的
2、内容为选写项;“b then Max=a Else Max=b End if End Function vPrivate Sub Command1_Click()n=Max(1234,433)Print nEnd Sub用户自定义函数子程序主程序调用Public|Private Function (参数列表) As 类型局部变量、变量定义语句组函数名称=返回值End Function变量=函数名称(参数)实参形参使用递归的条件v什么是递归算法 利用函数反复调用本身的算法。function third(a as integer,b as integer) third = sqr(a*a+b*b)
3、 end functionFunction s(n as integer)s=s(n-1)+2 End function自定义函数中调用VB内部函数自定义函数中调用本身使用递归的两个条件: 2、有结束条件。 1、在计算过程中,前后数据有一定的递推关系; 1, 2, 4, 7, 11, 16, 22, 29, 37递归算法给定N(N=1),用自定义函数的方法求S(n)=1+2+3+4+n的值递推关系:S(n) 和 S(n-1)的递推关系?S(n)=S(n-1)+nS(5)=s(4)+5S(4)=s(3)+4S(3)=s(2)+3S(2)=s(1)+2S(1)=1N=1时, s值为1N1时, s=s(n-1)+nPublic Function S(n As Integer) As IntegerIf n = 1 ThenS = 1ElseS = n + S(n - 1)End If End FunctionPrivate Sub Command1_Click()Dim Sum As IntegerSum = S(5)Print “Sum=“ & CStr(Sum) End Sub斐波那契数列v一列数的规则如下: 1、1、2、3、5、8、13、21、34 求第30位数是多少, 用递归算法实现。 分析:前两项为1,从第三项开始,S(n)=S(n-1)+S(n-2)