为什么结果有两行??
时间:2011-07-28
来源:互联网
Option Explicit
Private Sub Command1_Click()
Dim A As Integer
A = 2
Call Sub1(A)
End Sub
Private Sub Sub1(X As Integer)
X = X * 2 + 1
If X < 10 Then
Call Sub1(X)
End If
X = X * 2 + 1
Print X
End Sub
我分析的结果是23
但是运行结果是23和47
请问47是怎么来的??
Private Sub Command1_Click()
Dim A As Integer
A = 2
Call Sub1(A)
End Sub
Private Sub Sub1(X As Integer)
X = X * 2 + 1
If X < 10 Then
Call Sub1(X)
End If
X = X * 2 + 1
Print X
End Sub
我分析的结果是23
但是运行结果是23和47
请问47是怎么来的??
作者: QQ472152323 发布时间: 2011-07-28
做递归需要好好理一下思路就知道了。
作者: dingyanwei 发布时间: 2011-07-28
Sub(X) -> X=2 ->X=5 ->Sub(X) ->X=5 ->X=11 -> X=23(输出)->返回到endif ->执行X=X*2+1(47)->输出(47)
作者: c_cyd2008 发布时间: 2011-07-28
注意递归包括递推和回归,你只记得递推,忘了回归了
作者: c_cyd2008 发布时间: 2011-07-28
A=2,调用Sub1中,X=X*2+1=5,因为5<10,所以第二次进入Sub1,X=X*2+1=11,然后X=X*2+1=23,打印出第一行23
打印完23,End Sub后,程序返回到第一次进入Sub1时的End If,继续往下执行X=X*2+1=23*2+1=47
,因此打印出47.
打印完23,End Sub后,程序返回到第一次进入Sub1时的End If,继续往下执行X=X*2+1=23*2+1=47
,因此打印出47.
作者: z_wenqian 发布时间: 2011-07-28
如果你将
If X < 10 Then
Call Sub1(X)
End If
改为
If X < 10 Then
Sub1(X)
End If
打印出的将是 23 和 11
If X < 10 Then
Call Sub1(X)
End If
改为
If X < 10 Then
Sub1(X)
End If
打印出的将是 23 和 11
作者: z_wenqian 发布时间: 2011-07-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28