vb递归算法

时间:2024-10-04 22:02:15编辑:coo君

vb的递归算法问题,

首先,当n=1的时候,a-c你懂啥。
当n=2的时候,电脑先执hanoi 2 a b c
if不可行,然后执行 hanoi 1 a c b if可行,结果one,three对应着 a-b。接着再执行上面未完的hanoi n a b c 结果对应着a-c。
下面来看三,先是hanoi 3 a b c执行else
hanoi 2 a c b else hanoi 1 a b c注意,这里bc的位置又换了回来。所以,在hanoi 1 a b c(属于hanoi n-1 a c b) 结果 a-c然后回归,hanoi 2 a c b print a-b 接着回归最开始的hanoi 3 a b c print a-c。在这个过程中,换位是重点。


vb快速排序源代码

Private Sub Command1_Click()
Dim a(10) As Integer
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 100)
Next i
qsort a, LBound(a), UBound(a)
For i = LBound(a) To UBound(a)
Print a(i);
Next i
Print
End Sub

Sub swap(a As Integer, b As Integer)
t = a: a = b: b = t
End Sub

Sub qsort(a() As Integer, ByVal p As Integer, ByVal r As Integer)
Dim q As Integer
If p >= r Then Exit Sub
q = p
For i = p To r - 1
If a(i) < a(r) Then swap a(i), a(q): q = q + 1
Next i
swap a(q), a(r)
qsort a, p, q - 1
qsort a, q + 1, r
End Sub


VB递归算法

调用Test(3);
t=3, t>=1成立, 调用Test(2);
t=2, t>=1成立, 调用Test(1);
t=1, t>=1成立, 调用Test(0);
t=0, t>=1不成立, 函数返回值为0.

返回到Test(1), 执行余下部分:

for i=3 to 1 step -1
print chr(asc("A")+i)
next
print

输出:
D
C
B

调用的Test(1)结束, 函数返回值1.


继续执行Test(2)的余下部分:

for i=3 to 2 step -1
print chr(asc("A")+i)
next
print

输出:
D
C

调用的Test(2)结束, 函数返回值2.


继续执行Test(3)的余下部分:

同理输出:
D

调用的Test(3)结束, 函数返回值3.

最后, 执行 Print Test(3) 的输出, 打印返回结果:
3

-----------
所以, 最后的结果是:
D
C
B

D
C

D

3


上一篇:qq飞车剧情任务

下一篇:没有了