问题 单项选择题

单击命令按钮时,下列程序的执行结果是
Private Sub Book( x As Integer)
x=x*2+1
If x<6 Then
Call Book(x)
End If
x=x * 2 + 1
Print x;
End Sub
Private Sub Command2_Click( )
Book 2
End Sub

A.23 47

B.10 36

C.22 44

D.24 50

答案

参考答案:A

解析:[命题目的] 考查考生对函数的递归调用方法的掌握情况。
[解题要点] 此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用Book过程,把实参2传递给Book过程中的形参x,由x=x*2+1语句推出x=5,此时满足Book过程体中判断语句的判断条件,执行Call Book(x)语句,第二次调用Book过程。由x=x*2+1语句得到x值为11,判断条件11<6为假,故返回此调用过程执行x=x*2+1语句得x=23并输出,结束此次调用过程。由于两次调用Book过程,第二次仍返回调用时的断点语句,即执行x=x*2+ 1,Print x,输出x的值为47,返回到主调过程,结束程序,两次输出为23 47,正确答案为选项A) 。
[错解分析] 递归调用法是Visual Basic中一种特殊的函数调用方法。这种函数采用嵌套调用函数本身的方式调用函数。
[考点链接] 函数调用

选择题
单项选择题