衰減遞歸vb點(diǎn)虐 衰減理論模型

vb點(diǎn)虐 遞歸 vb點(diǎn)虐 遞歸

這種不要用遞歸,知道關(guān)鍵字長(zhǎng)度,知道節(jié)數(shù)用判斷就可以了,取前3位第一節(jié),第二節(jié)取3個(gè)為父節(jié)點(diǎn),取全部為第二節(jié)關(guān)鍵字,第三節(jié)取前6個(gè)為父節(jié)點(diǎn),取全部為第三節(jié)關(guān)鍵字.

創(chuàng)新互聯(lián)是一家專業(yè)提供聊城企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為聊城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

并沒(méi)有要求培養(yǎng)字段,查詢時(shí)從len(ID)=3*N,每次循環(huán)時(shí)N都+1

select * from tablename where len(id)=3

select case N

case 1

treeview.node.add id,name

case 2

treeview.node(left(id,3)).node.add id,name

case 3

treeview.node(left(id,3)).node(left(id,6)).add id,name

end select

查詢結(jié)果排個(gè)升序就不會(huì)存在這樣的問(wèn)題了,你剛才說(shuō)的那種,如果中間沒(méi)有比001001001001001更短的關(guān)鍵字,那么就脫節(jié),這種是不可能添加到treeview中.

遞歸一般用在不知道節(jié)數(shù),沒(méi)有關(guān)鍵字的情況,比如系統(tǒng)目錄結(jié)構(gòu).

遞歸整個(gè)C盤(pán)目錄:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim iDir As IO.Directory

Dim node As New TreeNode

'先把C盤(pán)添加到樹(shù)中

TreeView1.Nodes.Clear()

node.ImageIndex = 0

node.Text = "本地磁盤(pán) C:"

node.SelectedImageIndex = -1

TreeView1.Nodes.Add(node)

Dim i As Integer

'獲取C:盤(pán)根目錄下的文件夾

Dim str() As String = IO.Directory.GetDirectories("D:\")

For i = 0 To str.GetUpperBound(0)

'調(diào)用遍歷過(guò)程

AddDirectory("C:", str(i), node)

Next

node = Nothing

iDir = Nothing

End Sub

Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode)

Dim iDir As IO.Directory

'Dim iDirInfo As IO.DirectoryInfo

Dim i As Integer

Dim node As New TreeNode

'先添加本目錄,從文件夾路徑分析出文件夾名稱

node.Text = Strings.Replace(strPath, strFatherPath "\", "", , 1)

'為單個(gè)節(jié)點(diǎn)指定節(jié)點(diǎn)未被選中時(shí)顯示的圖標(biāo)

node.ImageIndex = 1

'為單個(gè)節(jié)點(diǎn)指定節(jié)點(diǎn)被選中時(shí)顯示的圖標(biāo)

node.SelectedImageIndex = 2

nodeFather.Nodes.Add(node)

Application.DoEvents()

Try

Dim str() As String = IO.Directory.GetDirectories(strPath)

'遍歷該目錄的子文件夾

For i = 0 To str.GetUpperBound(0)

AddDirectory(strPath, str(i), node)

Next

Catch ex As Exception

Debug.WriteLine(ex.Message)

End Try

node = Nothing

iDir = Nothing

End Sub

有沒(méi)有朋友可以詳細(xì)解釋一下關(guān)于VB.NET里面的遞歸?最好有代碼加注釋,謝謝.

給你個(gè)例子希望可以幫到你

遞歸系統(tǒng)目錄結(jié)構(gòu).

遞歸整個(gè)C盤(pán)目錄:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim iDir As IO.Directory

Dim node As New TreeNode

'先把C盤(pán)添加到樹(shù)中

TreeView1.Nodes.Clear()

node.ImageIndex = 0

node.Text = "本地磁盤(pán) C:"

node.SelectedImageIndex = -1

TreeView1.Nodes.Add(node)

Dim i As Integer

'獲取C:盤(pán)根目錄下的文件夾

Dim str() As String = IO.Directory.GetDirectories("D:\")

For i = 0 To str.GetUpperBound(0)

'調(diào)用遍歷過(guò)程

AddDirectory("C:", str(i), node)

Next

node = Nothing

iDir = Nothing

End Sub

Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode)

Dim iDir As IO.Directory

'Dim iDirInfo As IO.DirectoryInfo

Dim i As Integer

Dim node As New TreeNode

'先添加本目錄,從文件夾路徑分析出文件夾名稱

node.Text = Strings.Replace(strPath, strFatherPath "\", "", , 1)

'為單個(gè)節(jié)點(diǎn)指定節(jié)點(diǎn)未被選中時(shí)顯示的圖標(biāo)

node.ImageIndex = 1

'為單個(gè)節(jié)點(diǎn)指定節(jié)點(diǎn)被選中時(shí)顯示的圖標(biāo)

node.SelectedImageIndex = 2

nodeFather.Nodes.Add(node)

Application.DoEvents()

Try

Dim str() As String = IO.Directory.GetDirectories(strPath)

'遍歷該目錄的子文件夾

For i = 0 To str.GetUpperBound(0)

AddDirectory(strPath, str(i), node)

Next

Catch ex As Exception

Debug.WriteLine(ex.Message)

End Try

node = Nothing

iDir = Nothing

End Sub

簡(jiǎn)述vb點(diǎn)虐 過(guò)程的嵌套調(diào)用和遞歸調(diào)用

嵌套是指一個(gè)過(guò)程調(diào)用另一個(gè)過(guò)程的使用,遞歸過(guò)程是這個(gè)過(guò)程中調(diào)用本過(guò)程的使用。遞歸是嵌套的一種特殊形式,遞歸過(guò)程必須有“歸點(diǎn)”,也就是終止調(diào)用本身的一個(gè)分支

vb點(diǎn)虐 磁盤(pán)文件列表,界面如圖,在點(diǎn)虐 下如何實(shí)現(xiàn)?

預(yù)先準(zhǔn)備三個(gè)圖標(biāo)文件,用于樹(shù)型控件中顯示磁盤(pán)符號(hào)和文件夾的圖像之用。

1、窗體上添加控件如下:

組合框控件 ComboBox1,樹(shù)型控件 TreeView1,列表框控件 ListBox1,圖像列表控件 ImageList1。

選中TreeView1,設(shè)置其ImageList屬性為ImageList1。

2、設(shè)置屬性

選中圖像列表控件 ImageList1,在屬性窗口里,選中屬性Images,單擊三個(gè)小點(diǎn)按鈕,出現(xiàn)圖像集合編輯器窗口,單擊[添加按鈕],一一把準(zhǔn)備好的圖標(biāo)文件進(jìn)行添加,注意先后次序,如果不符合要求可以通過(guò)上下移動(dòng)按鈕重新改變次序。完成后單擊[確定]。

運(yùn)行圖如下:

完整代碼如下:

Imports?System.IO

Public?Class?Form1

Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load

'添加系統(tǒng)所有磁盤(pán)目錄符號(hào)

For?Each?MyDrive?As?String?In?Environment.GetLogicalDrives()

ComboBox1.Items.Add(MyDrive)

Next

'顯示第一個(gè)磁盤(pán)符號(hào)

ComboBox1.Text?=?ComboBox1.Items(0)

End?Sub

'遞歸過(guò)程添加目錄樹(shù)

Public?Sub?AddDirectory(ByVal?strFatherPath?As?String,?ByVal?strPath?As?String,?ByVal?nodeFather?As?TreeNode)

Dim?i?As?Integer

Dim?Mynode?As?New?TreeNode

'先添加本目錄

Mynode.Text?=?Strings.Replace(strPath,?strFatherPath??"\",?"",?,?1)

'為節(jié)點(diǎn)指定未被選中時(shí)顯示的圖標(biāo)

Mynode.ImageIndex?=?1

'為節(jié)點(diǎn)指定被選中時(shí)顯示的圖標(biāo)

Mynode.SelectedImageIndex?=?2

nodeFather.Nodes.Add(Mynode)

Application.DoEvents()

Try

Dim?str()?As?String?=?Directory.GetDirectories(strPath)

'遞歸遍歷該目錄的子文件夾

For?i?=?0?To?str.GetUpperBound(0)

AddDirectory(strPath,?str(i),?Mynode)

Next

Catch?ex?As?Exception

Debug.WriteLine(ex.Message)

End?Try

Mynode?=?Nothing

End?Sub

'根據(jù)給出的盤(pán)符添加目錄樹(shù)

Private?Sub?AddRootDirectory(ByVal?DiscSymbol?As?String)

Dim?Nynode?As?New?TreeNode

'先把磁盤(pán)盤(pán)符添加到樹(shù)中

TreeView1.Nodes.Clear()

Nynode.ImageIndex?=?0

Nynode.Text?=?DiscSymbol

Nynode.SelectedImageIndex?=?-1

TreeView1.Nodes.Add(Nynode)

Dim?i?As?Integer

'獲取磁盤(pán)根目錄下的文件夾

Dim?str()?As?String?=?Directory.GetDirectories(DiscSymbol??"\")

For?i?=?0?To?str.GetUpperBound(0)

'調(diào)用遞歸過(guò)程遍歷該文件夾里的所有子文件夾,并添加到樹(shù)型控件

AddDirectory(DiscSymbol,?str(i),?Nynode)

Next

Nynode?=?Nothing

End?Sub

Private?Sub?ComboBox1_SelectedIndexChanged(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?ComboBox1.SelectedIndexChanged

'根據(jù)磁盤(pán)符號(hào)的變更,顯示根目錄里的文件

ListBox1.Items.Clear()

For?Each?MyFile?As?String?In?System.IO.Directory.GetFiles(ComboBox1.Text)

ListBox1.Items.Add(MyFile)

Next

'根據(jù)磁盤(pán)符號(hào)的變更,重新顯示目錄樹(shù)

Dim?DiscSymbol?As?String

DiscSymbol?=?Microsoft.VisualBasic.Left(ComboBox1.Text,?Len(ComboBox1.Text)?-?1)

Call?AddRootDirectory(DiscSymbol)

End?Sub

'遞歸過(guò)程根據(jù)子目錄尋找上級(jí)目錄名--從而構(gòu)成完整的目錄路徑

Private?Sub?AllPath(ByVal?ThisNode?As?TreeNode,?ByRef?MyPathName?As?String)

If?ThisNode.Level??1?Then

'該節(jié)點(diǎn)層數(shù)大于1,其父節(jié)點(diǎn)不是磁盤(pán)根目錄

MyPathName?=?ThisNode.Parent.Text??"\"??MyPathName

Dim?MyNode?As?TreeNode?=?ThisNode.Parent

Call?AllPath(MyNode,?MyPathName)

Else

'該節(jié)點(diǎn)層數(shù)等于1,其父節(jié)點(diǎn)就是磁盤(pán)根目錄

MyPathName?=?ComboBox1.Text??MyPathName

End?If

End?Sub

Private?Sub?TreeView1_AfterSelect(ByVal?sender?As?System.Object,?ByVal?e?As?System.Windows.Forms.TreeViewEventArgs)?Handles?TreeView1.AfterSelect

'為了搜索選中的節(jié)點(diǎn)對(duì)應(yīng)目錄的文件,需要組成全路徑

Dim?MyAllPathName?As?String?=?TreeView1.SelectedNode.Text

Dim?MyNode?As?TreeNode?=?TreeView1.SelectedNode

If?TreeView1.SelectedNode.Level?=?0?Then

'如果選中的是根節(jié)點(diǎn)

MyAllPathName?=?ComboBox1.Text

Else

'如果選中的是非根節(jié)點(diǎn),調(diào)用遞歸過(guò)程組成全路徑

Call?AllPath(MyNode,?MyAllPathName)

MyAllPathName?=?MyAllPathName??"\"

End?If

'根據(jù)路徑,搜索文件名并顯示

ListBox1.Items.Clear()

For?Each?MyFile?As?String?In?System.IO.Directory.GetFiles(MyAllPathName)

ListBox1.Items.Add(MyFile)

Next

End?Sub

End?Class

文章名稱:衰減遞歸vb點(diǎn)虐 衰減理論模型
路徑分享:http://muchs.cn/article30/ddcgeso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、微信公眾號(hào)、網(wǎng)站營(yíng)銷、服務(wù)器托管、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)