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
,最终导致“栈溢出”。
2.37MB
文件大小:
评论区