递归算法
'1 什么是递归?
'递归就是自已调用自已。
'2,用递归有什么好处?
'简化代码,让程序更简捷。特别是在循环层数不定的情况下可以大大简单代码。
'3,递归有什么坏处?
'因为递归在使用时会产生大量储存临时信息的“栈”(按先进后出储存信息),所以运行效果比较低,所以一般不建议使用递归设计程序
'2 例: 计算4的阶乘 (4 * 3 * 2 * 1 = 24)
Sub 一般方法()
Dim k, x
k = 1
For x = 4 To 1 Step -1
k = k * x
Next x
MsgBox k
End Sub
Sub 递归1()
MsgBox s(5)
End Sub
-----------------------------------
'函数法
Function s(n As Integer) As Integer
If n = 1 Then
s = 1
Else
s = n * s(n - 1)
End If
End Function
Sub 递归2()
k = 1
s2 4
MsgBox k
End Sub
'sub过程法
Sub s2(n As Integer)
' Dim m
If n > 0 Then
k = k * n
'm = n
s2 n - 1
End If
End Sub
'3 例:计算1+2+3+.5
Sub 递归3()
k = 0
add5 1
'MsgBox k
End Sub
Sub add5(n As Integer)
If n < 5 Then
k = k + n
add5 n + 1
End If
End Sub
Sub 冒泡排序()
Dim arr, temp, x, y, t, k
t = Timer
arr = Range("a1:a10")
For x = 1 To UBound(arr) - 1
For y = x + 1 To UBound(arr) '只和当前数字下面的数进行比较
If arr(x, 1) > arr(y, 1) Then '如果它大于它下面某一个数字
temp = arr(x, 1)
arr(x, 1) = arr(y, 1)
arr(y, 1) = temp
End If
Next y
Next x
Range("b3").Resize(x) = ""
Range("b3").Resize(x) = arr
'Range("b2") = Timer - t
MsgBox k
End Sub
-----------------------------------------------------------------
Sub 冒泡排序演示()
Dim arr, temp, x, y, t, k
For x = 1 To 9
Range("a