关于vb的疑问

privatesubform_clickdimiasintegerfori=1to20printfibonacci(i)ifimod4=0thenprintnextien... private sub form_click
dim i as integer
for i=1 to 20
print fibonacci(i)
if i mod 4=0 then print
next i
end sub
private function fibonacci(byval n as integer)
if n<=2 then
fibonacci=1
exit funcuion
else
fibonacci=fibonacci(n-1)+fibonacci(n-2)
end if
end function
问一下 我把括号里的byval n换成i行吗,还有为什莫要用byval 而不用byref? 求解 谢谢
展开
 我来答
百度网友2effcdb
2011-03-28 · 超过24用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:67.4万
展开全部
提出这个问题说明你对参数的传递不是很清楚,byval n 可以换成byval i,但此处的i和上面的i不是同一个,你在函数中的n也要相应地改为i。对于此例,用byval和byref的结果都是一样的,因为你在 fibonacci过程中只使用了n的值,而没有对n的值进行修改。所以值传递和地址传递都是一样的。
private sub form_click
Dim i As Integer
i = 10
fibonacci(i)
MsgBox("第一次结果:" & Str(i))
fibonacci_2(i)
MsgBox("第二次结果:" & Str(i))
end sub
private sub fibonacci(byval n as integer)
n=20
end sub
private sub fibonacci_2(byref n as integer)
n=20
end sub
你运行一下这个代码就知道区别了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hunter2k
2011-03-28 · TA获得超过3986个赞
知道小有建树答主
回答量:1376
采纳率:66%
帮助的人:642万
展开全部
可以换成I,不过换了以后函数里的n都要换成i。这个n只是个内部变量,换成什么都没关系,重要的是统一。
byval是伟值的意思,就是把print fibonacci(i)里的i值赋给n,而byref是伟址的意思,就是让n也指向i的地址,那么n变了也相当于i变了,您想想会有什么结果?i 是循环变量,循环变量的值是不能轻易在循环体内被改变的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-28
展开全部
可以(但函数里语句里的n都要变成i),因为要用传值而不用传址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式