请教一道VB的程序阅读题
执行下面的程序,第一行结果是____;第二行结果是____;第三行结果是_____。PrivateSubForm_Load()test1EndSubPrivateSubt...
执行下面的程序,第一行结果是____;第二行结果是____;第三行结果是_____。
Private Sub Form_Load()
test1
End Sub
Private Sub text(x As Integer)
x = x * x + 1
If x < 6 Then Call test(x)
x = x * 2 + 1
Form1.Print x
End Sub
问题:答案是53、107、215
我想要具体的解题过程 展开
Private Sub Form_Load()
test1
End Sub
Private Sub text(x As Integer)
x = x * x + 1
If x < 6 Then Call test(x)
x = x * 2 + 1
Form1.Print x
End Sub
问题:答案是53、107、215
我想要具体的解题过程 展开
1个回答
展开全部
首先, test1应写做test 1,中间加个空格。其次,test 1函数调用不应该在form_load中使用,因为form_load在执行时窗口还并未创建完成,此时的显示输出会在窗口创建完成后被窗口重绘刷新掉。所以可以在窗口中添加一个按钮,在按钮中执行 test 1
再次,Private Sub text(x As Integer) 函数定义名称写错,应该改写成Private Sub test(x As Integer)
下面,我们说明一下执行test1 1的运行过程。
1. x=x*x+1 此时x=1 所以执行后x=1*1+1=2
2. 执行if语句时,因为 2<6 所以执行调用call test(2),程序进入递归调用,第一次压栈
3. 再次执行x=x*x+1 此时x=2 ,所以 执行后 x=x*x+1=5
4. 执行if语句时,因为 5<6 所以执行调用call test(5),程序进入递归调用,第二次压栈
5. 再次执行x=x*x+1 此时x=5 ,所以 执行后 x=x*x+1=26
6. 执行if语句时,因为 26>6 程序继续下行执行 x=x*2+1 ,此时x=26,执行后x=53
7. 在窗口中输出53
8. 递归返回,第一次退栈
9. 再次执行x=x*2+1语句,此时x=53,执行后x=107
10. 在窗口中输出107
11. 递归返回,第二次退栈, 此时堆栈已完全退栈到栈底
12. 再次执行x=x*2+1语句,此时x=107,执行后x=215
13. 在窗口中输出215
14. 因为堆栈已回到栈底,递归完成,所以程序执行完毕
若满意答案,请及时采纳,谢谢
再次,Private Sub text(x As Integer) 函数定义名称写错,应该改写成Private Sub test(x As Integer)
下面,我们说明一下执行test1 1的运行过程。
1. x=x*x+1 此时x=1 所以执行后x=1*1+1=2
2. 执行if语句时,因为 2<6 所以执行调用call test(2),程序进入递归调用,第一次压栈
3. 再次执行x=x*x+1 此时x=2 ,所以 执行后 x=x*x+1=5
4. 执行if语句时,因为 5<6 所以执行调用call test(5),程序进入递归调用,第二次压栈
5. 再次执行x=x*x+1 此时x=5 ,所以 执行后 x=x*x+1=26
6. 执行if语句时,因为 26>6 程序继续下行执行 x=x*2+1 ,此时x=26,执行后x=53
7. 在窗口中输出53
8. 递归返回,第一次退栈
9. 再次执行x=x*2+1语句,此时x=53,执行后x=107
10. 在窗口中输出107
11. 递归返回,第二次退栈, 此时堆栈已完全退栈到栈底
12. 再次执行x=x*2+1语句,此时x=107,执行后x=215
13. 在窗口中输出215
14. 因为堆栈已回到栈底,递归完成,所以程序执行完毕
若满意答案,请及时采纳,谢谢
11111
2024-11-15 广告
2024-11-15 广告
作业指导书是一种专门编写的指导性文件,用于完成某一项或同一类型的工作。它是根据设计图纸、制造厂说明书、相关的验评标准、编写人员现场所积累的施工经验以及成熟实用的施工工艺所编写的。定义和作用作业指导书是质量管理体系文件的组成部分,主要用于阐明...
点击进入详情页
本回答由11111提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询