一道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,结果是?
不要答案!!!要过程!!!!
展开
 我来答
YSZXLXH
2014-02-13 · TA获得超过915个赞
知道小有建树答主
回答量:383
采纳率:0%
帮助的人:246万
展开全部
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。
syx54
2014-02-13 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2744万
展开全部
这是发生递归调用的程序:
在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程序中执行递归调用的执行原理以及过程说明:
看看我的文章。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2014-02-13 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
这是因为递归过程调用的结果,其核心语句就是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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友346dae6
2014-02-13 · TA获得超过204个赞
知道小有建树答主
回答量:273
采纳率:50%
帮助的人:72.7万
展开全部
余数怎么能是英文字母o?“听不清楚”说的对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式