VB递归题目,求详细解答过程

3.执行下面的程序,单击Commandl,在窗体上显示的变量b的值为:(7),变量c的值为(8),变量z的值为(9)OptionExplicitPrivateSubCom... 3.执行下面的程序,单击Commandl,在窗体上显示的变量b的值为:( 7 ),变量c的值为

( 8 ) ,变量z的值为( 9 )

Option Explicit

Private Sub Command1_Click()

Dim b As Integer,C As Integer,z As Integer

b=2

C=1

Z=fun(b,fun(b+1,c))+b-c+1

Print b,c,z

End Sub

Private Function fun(X As Integer,ByVal Y As Integer)As Integer

X=X-Y

y=X+Y+2

fun=Y—X

End Function

4.执行下面的程序,单击Commandl,输出的变量i的值是( 10 ) ,变量j的值是 ( 11 ) ,

变量k的值是( 12 )

Option Explicit

Private Sub Command1_Click()

Dim i As Integer,j As Integer

Dim k As Integer

i=10

j=4

k=Funk(i,j)

Print i,j,k 、

End Sub •

Private Function Funk(ByVal A As Integer,B As Integer) As Integer

A=A+B

B=B-2 .

if B=0 Or B=1 Then

Funk=1

Else

Funk=A+Funk(A,B)

End If

End Function
展开
 我来答
saddogchen
2011-10-13 · 超过27用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:48.8万
展开全部
你的两个题目主要是要注意函数中ByVal的应用问题
程序在运行中传递变量的时候,如果没有ByVal 就是传递变量的地址,有ByVal 的时候是传递变量的值。
第3题:在执行第一次fun的时候,b的值没有发生变化,还是2,因为传递的是b+1的地址给函数fun的,所以没有发生变化,fun返回的值是3,当然C的值由于ByVal的缘故没有发生变化。
在执行第二次fun(b,3)的时候,程序将b的地址传递给fun函数了,所以b的值进过计算后变成-1了。fun的返回是 5。
最后进行计算 5+(-1)-1+1=4
最后打印的时候是(b,c,z)-1 1 4
第4题:在执行第一次的funk的时候,根据上面的解释,i=10是不会变的,A=A+4=14,但j的值就变成了B(j)=4-2=2了。
然后在funk内执行第二次的funk函数,j的地址继续被传递计算,B(j)=2-2=0 了。 这时判断B的值为0 ,funk返回就是funk=A+1=15了。
最后打印出来的结果就是,i没有变=10,j变成了0,funk=15: 10 0 15
OK 解释完毕
追问
为什么fun=3?求详细过程
追答
第三题,首先执行的是里面的那个fun,而不是外面的fun
里面的fun(3,1)=3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最美乡村行
2011-10-13 · TA获得超过1136个赞
知道大有可为答主
回答量:1191
采纳率:0%
帮助的人:1635万
展开全部
3实际运行的结果是-1,1,4
4实际运行的结果是10,0,15
简单的运算主要难点在这里这两个函数的定义上
Private Function fun(X As Integer,ByVal Y As Integer)As Integer
Private Function Funk(ByVal A As Integer,B As Integer) As Integer
加上ByVal表示的是值传递,不加这个就是地址传递,
值传递,在函数里面的运算和传过来以前没关系,
地址就不一样了,比如3里面的这里
fun(b,fun(b+1,c))
第一次fun(b+1,c)因为b+1是一个新的临时地址,和b没关系这个只是考虑返回值fun=3
然后计算fun(b,3)时这是b就是地址传递,函数里面的X可以理解就是b本身,所以这个操作X=X-Y,上面过程中b的也变化了
4里面的Private Function Funk(ByVal A As Integer,B As Integer) As Integer
B同样道理,是地址传递
追问
为什么fun=3?求详细过程
追答
Private Function fun(X As Integer,ByVal Y As Integer)As Integer
第一次传过来 x=3 y=1
X=X-Y
x=3-1=2
y=X+Y+2
y=2+1+2=5
fun=Y—X
fun=5-2=3

End Function
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式