一道VB题 求解!!!!!!!
privatesubcommand1_click()dimxasintegerx=val(inputbox("请输入一个整数“))fun(x)endsubprivates...
private sub command1_click()
dim x as integer
x=val(inputbox("请输入一个整数“))
fun(x)
end sub
private sub fun(x as integer)
if x mod 2=o then fun(x/2)
print x;
end sub
执行上述过程输入6,结果是?
不要答案!!!要过程!!!! 展开
dim x as integer
x=val(inputbox("请输入一个整数“))
fun(x)
end sub
private sub fun(x as integer)
if x mod 2=o then fun(x/2)
print x;
end sub
执行上述过程输入6,结果是?
不要答案!!!要过程!!!! 展开
4个回答
展开全部
1、当点击按钮1的时候
先运行定义语句:dim x as integer,定义x为一个整型变量。
然后运行:x=val(inputbox("请输入一个整数“)),会弹出一个窗口,让你输入,你就输入6,程序会把6赋值给x。
fun(x)的意思是调用这个函数。因为x=6,即:fun(6)
2、if x mod 2=o then fun(x/2),如果x能被2整除,那么就调用fun(x/2),因为6刚好能被2整除,所以就调用fun(x/2),这时x/2=6/2,所以调用的是fun(3),因为3不能被2整除,所以,到下一步,在窗体输出3,完成后,没有结束,前面if x mod 2=o then fun(x/2)时,后面还有一句print x,于是再次在窗体输出6,结束。
3、总之,这道题答案是先在窗体输出的3,再输出6。
先运行定义语句:dim x as integer,定义x为一个整型变量。
然后运行:x=val(inputbox("请输入一个整数“)),会弹出一个窗口,让你输入,你就输入6,程序会把6赋值给x。
fun(x)的意思是调用这个函数。因为x=6,即:fun(6)
2、if x mod 2=o then fun(x/2),如果x能被2整除,那么就调用fun(x/2),因为6刚好能被2整除,所以就调用fun(x/2),这时x/2=6/2,所以调用的是fun(3),因为3不能被2整除,所以,到下一步,在窗体输出3,完成后,没有结束,前面if x mod 2=o then fun(x/2)时,后面还有一句print x,于是再次在窗体输出6,结束。
3、总之,这道题答案是先在窗体输出的3,再输出6。
展开全部
这是发生递归调用的程序:
在private sub command1_click()里的fun(x),将x=6作为参数,调用自定义过程fun,进入fun;
执行
if x mod 2=0 then fun(x/2) '应该是0,不是字母o吧?
由于x = 6,所以满足x mod 2=0,执行fun(x/2),用3调用自定义过程fun,这里是在过程fun中再一次去调用自定义过程fun,即自己调用自己,叫做递归调用。进入fun;
执行
if x mod 2=0 then fun(x/2)
这次不满足,就执行输出,3
然后要返回调用它的地点,就是返回上一次的 fun处,执行调用语句的下一条语句,就是输出语句,所以输出6。
所以,在窗体上看到的是
3 6
补充语句,关于递归,你可以搜索以下主题:
在VB程序中执行递归调用的执行原理以及过程说明:
看看我的文章。
在private sub command1_click()里的fun(x),将x=6作为参数,调用自定义过程fun,进入fun;
执行
if x mod 2=0 then fun(x/2) '应该是0,不是字母o吧?
由于x = 6,所以满足x mod 2=0,执行fun(x/2),用3调用自定义过程fun,这里是在过程fun中再一次去调用自定义过程fun,即自己调用自己,叫做递归调用。进入fun;
执行
if x mod 2=0 then fun(x/2)
这次不满足,就执行输出,3
然后要返回调用它的地点,就是返回上一次的 fun处,执行调用语句的下一条语句,就是输出语句,所以输出6。
所以,在窗体上看到的是
3 6
补充语句,关于递归,你可以搜索以下主题:
在VB程序中执行递归调用的执行原理以及过程说明:
看看我的文章。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是因为递归过程调用的结果,其核心语句就是fun(6)。
Private Sub command1_click()
Dim x As Integer
x = Val(InputBox("请输入一个整数:"))
fun (x)
End Sub
Private Sub fun(x As Integer)
If x Mod 2 = 0 Then fun (x / 2)
Print x;
End Sub
调用时,因为6能被2整除,所以就递归调用fun(3);
3不能被2整除,所以就首次打印 3 ,然后返回。返回后又遇到打印语句,本次打印的是 6 ,再次返回就结束了command1_click()的调用。
所以,总的输出就是:
3 6
Private Sub command1_click()
Dim x As Integer
x = Val(InputBox("请输入一个整数:"))
fun (x)
End Sub
Private Sub fun(x As Integer)
If x Mod 2 = 0 Then fun (x / 2)
Print x;
End Sub
调用时,因为6能被2整除,所以就递归调用fun(3);
3不能被2整除,所以就首次打印 3 ,然后返回。返回后又遇到打印语句,本次打印的是 6 ,再次返回就结束了command1_click()的调用。
所以,总的输出就是:
3 6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
余数怎么能是英文字母o?“听不清楚”说的对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询