2011-11-18 364 views
3

我看過other posts,但它們大部分都在C#中。對於想要學習遞歸的人來說,在VB.Net中查看真實世界的工作示例可能會有幫助。如果有人只是在VB.Net中進行編程,那麼嘗試破譯和增加難度將會更加困難。我確實發現了this post,現在我明白了,但是如果有過VB.Net的例子,我可能已經能夠更快地找到它了。這就是我提出這個問題的部分原因:VB.Net中的遞歸函數示例

任何人都可以可以顯示VB.Net中的遞歸函數的一些簡單例子?

+0

你可以嘗試通過將簡單的數學公式應用於正式的 方法來做遞歸方法 – 2013-04-03 02:34:26

回答

3

這一個從wiki文章是偉大的

Sub walkTree(ByVal directory As IO.DirectoryInfo, ByVal pattern As String) 
For Each file In directory.GetFiles(pattern) 
    Console.WriteLine(file.FullName) 
Next 
For Each subDir In directory.GetDirectories 
    walkTree(subDir, pattern) 
Next 
End Sub 
3

看看MSDN文章 - Recursive Procedures (Visual Basic)。本文將幫助您理解遞歸的基礎知識。

請參考以下鏈接:

  1. Recursive function to read a directory structure
  2. Recursion, why it's cool.
+0

我在另一篇文章中看到了一條評論,並且想知道是否真的需要編寫一個遞歸函數爲了解決一個問題,迭代無法解決的問題是循環遍歷一個目錄或文件系統,並通過嵌套控件循環? –

+0

@ kcbeard:不,那是不正確的。有很多情況下,遞歸是有用的(我現在正在處理的應用程序中可以考慮十幾個或更多)。例如,如果要處理以樹結構內部存儲的對象,則遞歸絕對是您的朋友。 –

+0

@competent_tech:在Web應用程序的哪一點會有遞歸功能阻礙其性能。循環嵌套控件是正常的遞歸函數嗎? –

1

一個經典的

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Try 
     Label1.Text = Factorial(20).ToString("n0") 
    Catch ex As Exception 
     Debug.WriteLine("error") 
    End Try 
End Sub 

Function Factorial(ByVal number As Long) As Long 
    If number <= 1 Then 
     Return (1) 
    Else 
     Return number * Factorial(number - 1) 
    End If 
End Function 'Factorial 

在.NET 4.0中,你可以使用,而不是長期的BigInteger ...

0

這是一個遞歸例如從MSDN直接爲2012 VB.NET:

Function factorial(ByVal n As Integer) As Integer 
    If n <= 1 Then 
     Return 1 
    Else 
     Return factorial(n - 1) * n 
    End If 
End Function 

Reference