請大俠談談遞歸的原理並舉一些實例。因為小弟剛開始學程序,謝謝!

解决方案 »

  1.   

    递归就是自己调用自己.例:
    Private Sub aaa(b As Integer)
    If b > 10 Then
        Exit Sub
    Else
        b = b + 1
        Debug.Print b
        aaa b
    End If
    End SubPrivate Sub Command1_Click()
    aaa 3
    End Sub
      

  2.   

    比如有一個部門表t1,其有兩字段,NO(部門編號)與PNO(父部門編號)
    用遞歸怎樣查找某一部門下的所子部門
      

  3.   


    递归调用有风险性:一旦超过极限将引起堆栈溢出。VB下是多少层我不大清楚,当年在QB下是88层(DOS下目录的限制也是大概的数量)。我的办法是采用另一个办法:T()是一个动态数组T(0)=要查找的父部门Do
      获得T(tIndex)下一级子部门Ts()
      将Ts()每个元素追加到T()后面(以ReDim扩展数组,然后再做这个操作)
      tIndex=tIndex + 1
    Loop Until tIndex>表T()的最后一个元素标号。从表T(1)到最后一个元素就是所有的子部门(或者你可以筛选一下)。上述过程是广度优先的,而递归调用是深度优先的。(看你使用繁体字,如果看起来困难,下面是本贴的繁体版)遞歸調用有風險性:一旦超過極限將引起堆棧溢出。VB下是多少層我不大清楚,當年在QB下是88層(DOS下目錄的限制也是大概的數量)。我的辦法是采用另一個辦法:T()是一個動態數組T(0)=要查找的父部門Do
      獲得T(tIndex)下一級子部門Ts()
      將Ts()每個元素追加到T()後面(以ReDim擴展數組,然後再做這個操作)
      tIndex=tIndex + 1
    Loop Until tIndex>表T()的最後一個元素標號。從表T(1)到最後一個元素就是所有的子部門(或者你可以篩選一下)。上述過程是廣度優先的,而遞歸調用是深度優先的。