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,结果是?
不要答案!!!要过程!!!!
一道VB题 求解!!!!!!!
答案:4 悬赏:80 手机版
解决时间 2021-02-19 22:32
- 提问者网友:wodetian
- 2021-02-19 06:33
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-02-19 07:23
这是发生递归调用的程序:
在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程序中执行递归调用的执行原理以及过程说明:
看看我的文章。
全部回答
- 1楼网友:酒者煙囻
- 2021-02-19 10:00
这是因为递归过程调用的结果,其核心语句就是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
- 2楼网友:野味小生
- 2021-02-19 09:32
i的循环为1,2 j的循环为1,2,3,4
当j为奇数时做a=a-1;然后做a=a+1
所以
i=1:j=1:a=a+1 >>a=1
i=1:j=2:a=a-1:a=a+1 >>a=1
i=1:j=3:a=a+1 >>a=2
i=1:j=4:a=a-1:a=a+1 >>a=2
i=2:j=1:a=a+1 >>a=3
i=2:j=2:a=a-1:a=a+1 >>a=3
i=2:j=3:a=a+1 >>a=4
i=2:j=4:a=a-1:a=a+1 >>a=4
所以最后的结果时4
- 3楼网友:神也偏爱
- 2021-02-19 09:00
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。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯