VB基础教程:递归常见陷阱及解决方法

学习递归?小心“栈溢出”! 这通常发生在递归调用时,参数没有朝着终止条件收敛,导致无限循环。 咱们以阶乘函数为例:

Public Function fac(n As Integer) As Integer 
    If n = 1 Then 
        fac = 1 
    Else 
        fac = n * fac(n - 1) 
    End If 
End Function

Private Sub Command1_Click() 
    Print "fac(5)="; fac(5) 
    Print "fac(5)="; fac(-5) ' 问题就出在这!
End Sub

你看,fac(-5) 会不断调用自身,参数越来越小,永远达不到终止条件 n = 1,最终导致“栈溢出”。

ppt 文件大小:2.37MB