欢迎来到天天文库
浏览记录
ID:43919762
大小:293.50 KB
页数:21页
时间:2019-10-16
《FUNCTION函数定义及调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第八章过程8.2Function函数定义及调用8.4递归过程8.3参数的传递8.1SUB过程及其调用8.5变量的作用域8.6程序示例8.7实验§8.4递归过程递归的概念用自身的结构来描述自身称为“递归”即一个过程调用过程本身,在递归调用中,一个过程执行的某一步要用到它自身的上一步或上几步的结果。例如:最典型的例子是对阶乘运算可作如下定义:n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!Subf1(x)…x=f2(xx)*3…EndSubSubCommand1_Click()……Callf1
2、(y)EndSubFunctionf2(x)……f2=f3(x)+3EndSubFunctionf3(x)……f3=x*xEndSubSubf1(x)…Callf1(y)EndSub过程的嵌套调用SubCommand1_Click()……Callf1(y)EndSub过程的递归调用§8.4递归过程递归有两种•直接递归:自己调用自己•间接递归:A调用B,B调用A递归过程中必须有递归结束语句。递归子过程和递归函数VB允许一个子过程或函数在自身定义的内部调用自己,这样的子过程或函数称为递归子过程或递归函数。
3、许多问题中具有递归的特性,用递归调用描述它们就非常方便。注意:递归过程必须有一个结束递归的终止条件,否则会无限制的执行下去。§8.4递归过程例7、求fac(n)=n!的值(n已4为例)递推fac(4)=4*fac(3)fac(3)=3*fac(2)fac(2)=2*fac(1)fac(1)=1fac(2)=2*1fac(3)=3*2fac(4)=4*6回归§8.4递归过程PublicFunctionfac(nAsInteger)AsIntegerIfn=1Thenfac=1Elsefac=n*fac(
4、n-1)EndIfEndFunctionPrivateSubCommand1_Click()Print“fac(4)=“;fac(4)EndSub递归调用演示§8.4递归过程1、求阶乘。n!=n*(n-1)!2、求菲波那契数列前10项。F(1)=1,F(2)=1,后面各项满足:F(n)=F(n-1)+F(n-2)3、求两个数的最大公约数。4、逆转输出一个字符串。5、汉诺塔游戏。相关习题:§8.5变量的作用域变量的作用域过程的作用域静态变量同名变量§8.5变量的作用域应用程序(.vbp文件)类模块(.c
5、ls)文件一个或若干个窗体模块(*.frm)文件用户自定义子过程(Sub)用户自定义函数过程(Function)事件过程(Sub)用户自定义子过程(Sub)用户自定义函数过程(Function)一个或若干个标准模块(*.bas)文件全局级模块级过程级§8.5.1变量的作用域1.局部变量作用域为定义的过程内。指在过程内用Dim语句声明的变量(或不加声明直接使用的变量),只能在本过程中使用,别的过程不可访问。局部变量随过程的调用而分配存储单元,并进行变量的初始化,一旦该过程体结束,变量的内容自动消失,占用
6、的存储单元释放。不同的过程中可有相同名称的变量,彼此互不相干。使用局部变量有利于程序的调试如Dimbasstring§8.5.1变量的作用域2.窗体/模块级变量作用域为定义的窗体/模块内。指在一个窗体/模块的任何过程外,即在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。如Dimcasstring§8.5.1变量的作用域3.全局变量作用域为整个应用程序内。指在窗体或标准模块的任何过程或函数外,即在“通用声明”段中用Public语句声明的变量,可被应用程序的
7、任何过程或函数访问。全局变量的值在整个应用程序中始终不会消失和重新初始化,只有当整个应用程序结束时,才会消失。4、例题如Dimaasstring§8.5.1变量的作用域演示§8.5.2过程的作用域1.窗体/模块级指在某个窗体或标准模块内定义的过程,定义子过程或函数时前加Private关键字,过程只能被本窗体或本标准模块中的过程调用§8.5.2过程的作用域2、全局级指在窗体或标准模块中定义的过程,其默认是全局的,也可加Public进行说明。全局级过程可供该应用程序的所有窗体和所有标准模块调用,调用方式有
8、如下两种:在窗体定义的过程,外部过程调用时,必须加窗体名在标准模块定义的过程,外部过程均可调用,但过程名必须唯一,否则要加标准模块名§8.5.3静态变量每次调用过程时,用Static说明的变量保持原来的值,而用Dim说明的变量,每次调用过程时,都重新初始化。形式如下:Static变量名[As类型]StaticFunction函数名([参数列表])[As类型]StaticSub过程名[(参数列表)]§8.5.3静态变量PrivateSubCommand1_
此文档下载收益归作者所有