关于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? 求解 谢谢 展开
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? 求解 谢谢 展开
3个回答
展开全部
提出这个问题说明你对参数的传递不是很清楚,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
你运行一下这个代码就知道区别了。
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
你运行一下这个代码就知道区别了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以换成I,不过换了以后函数里的n都要换成i。这个n只是个内部变量,换成什么都没关系,重要的是统一。
byval是伟值的意思,就是把print fibonacci(i)里的i值赋给n,而byref是伟址的意思,就是让n也指向i的地址,那么n变了也相当于i变了,您想想会有什么结果?i 是循环变量,循环变量的值是不能轻易在循环体内被改变的。
byval是伟值的意思,就是把print fibonacci(i)里的i值赋给n,而byref是伟址的意思,就是让n也指向i的地址,那么n变了也相当于i变了,您想想会有什么结果?i 是循环变量,循环变量的值是不能轻易在循环体内被改变的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-28
展开全部
可以(但函数里语句里的n都要变成i),因为要用传值而不用传址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询