【文章內(nèi)容簡介】
(2)有一個明確的結束遞歸的條件 (終止條件 ),否則過程將永遠“遞歸”下去 過程的遞歸調(diào)用 可用下列的遞歸公式 1 n=1 n (n1)! n1 本遞歸中,終止條件是 n=1 n! = 例 采用遞歸方法求 n! (n0) Private Sub Form_Load() Dim n As Integer, m As Double Show n = Val(InputBox(輸入 1~ 15之間的整數(shù) )) If n 1 Or n 15 Then MsgBox 錯誤數(shù)據(jù) , 0, 檢查數(shù)據(jù) End End If m= fac(n) Print n。 != 。 m End Sub Private Function fac(n) As Double If n 1 Then fac = n * fac(n 1) 39。遞歸調(diào)用 Else fac = 1 39。n=1時,結束遞歸 End If End Function 說明: 當 n1時,在 Fac過程中調(diào)用 Fac過程,然后 n減 1,再次調(diào)用 Fac過程,這種操作一直持續(xù)到 n=1為止。例如,當 n=3時,求 Fac(3)變成求3 Fac(2),求 Fac(2)變成求 2 Fac(1),而 Fac(1)為 1,遞歸結束。以后再逐層返回,遞推出 Fac(2)及 Fac(3)的值 注意,在某次調(diào)用 Fac過程時并不是立即得到 Fac(n)的值,而是一次又一次地進行遞歸調(diào)用,到 Fac(1)時才有確定的值,然后通用過程逐層返回中依次算出 Fac(2)、 Fac(3)的值 Form_Load過程 m=Fac(3) Fac過程 調(diào)用 Fac(3)值 為 6 參數(shù) n為 3 Fac=3*Fac(2) Fac過程 調(diào)用 Fac(2)值 為 2 參數(shù) n為 2 Fac=2*Fac(1) Fac過程 調(diào)用 Fac(1)值 為 1 參數(shù) n為 1 Fac=1 遞歸調(diào)用過程 (n=3) 來自 中國最大的資料庫下載 求兩個正整數(shù) n和 m的最大公約數(shù),解題方法見例 也可采用遞歸調(diào)用方法來求解, 遞歸終止條件是余數(shù)為 0 Private Sub Form_Load() Show m = Val(InputBox(輸入 m的值 )) n = Val(InputBox(輸入 n的值 )) Print m。 和 。 n。 的最大公約數(shù)是: 。 gys(n, m) End Sub Private Function gys(n, m) p = n Mod m If p = 0 Then 39。終止條件 gys = m Else gys = gys(m, p) 39。m→n,p→m, 再調(diào)用 End If End Function 例 用遞歸方法求兩個正整數(shù) n和 m的最大公約數(shù) 變量的作用域 (空間 )和生存期 (時間 ) 代碼模塊的概念 應用程序通常包括 窗體文件 (.frm)、模塊文件 (.bas)和類模塊 (.cls) 應用程序 工程文件 (.vbp) 窗體模塊 文件 (.frm) Sub 過程 Function 過程 事件 過程 聲明 部分 類模塊 文件 (.cls) 標準模塊 文件 (.bas) Sub 過程 Function 過程 聲明 部分 Sub Main 過程 變量的作用范圍 變量根據(jù)所處的位置或被定義不同,其作用范圍也不同 局部變量、模塊級變量和全局變量 1. 局部變量 在一個過程內(nèi)部用 Dim或 Static聲明的變量稱為局部變量。只能在本過程中有效。在一個窗體中,不同過程中定義的局部變量 Private Sub Command1_Click() Dim Count As Integer Dim Sum As Integer . . . End Sub Private Sub Command2_Click() Dim Sum As Integer . . . End Sub 這兩個同名變量 Sum沒有任何聯(lián)系 變量的作用域 模塊級變量可以在一個窗體的不同過程中使用 在窗體模塊的聲明部分中聲明該變量 如果用 Private或 Dim來聲明,則該變量只能在本窗體 (或本模塊 ) 以 Public聲明的變量,允許在其他窗體和模塊中引用 2. 模塊級變量 全局變量可以被應用程序中任何一個窗體和模塊直接訪問。 全局變量要在標準模塊文件 (.bas)中的聲明部分用 Global或 Public語句來聲明。 格式: Global 變量名 As Public 變量名 As 數(shù)據(jù)類型 3. 全局變量 生存期,也即變量能夠保持其值的時間 分為 動態(tài)變量 和 靜態(tài)變量 1. 動態(tài)變量 動態(tài)變量是指程序運行進入變量所在的過程時,才分配給該變量的內(nèi)存單元,經(jīng)過處理退出該過程時,該變量占用的內(nèi)存單元自動釋放,其值消失。當再次進入該過程時,所有的動態(tài)變量將重新初始化。 使用 Dim關鍵字 在過程中聲明的局部變量屬于動態(tài)變量 變量的生存期 靜態(tài)變量是指程序進入該變量所在的過程,經(jīng)過處理退出該過程時,其值仍被保留,即變量所占的內(nèi)存單元沒有釋放。 使用 Static關鍵字 在過程中聲明的局部變量屬于靜態(tài)變量 例 使用 Static Sub語句的示例 Static Sub Subtest() Dim t As Integer 39。t為靜態(tài)變量 t = 2 * t + 1 Print t End Sub Private Sub Command1_Click() Call Subtest 39。調(diào)用子過程 Subtest End Sub 1. 靜態(tài)變量 運行后,多次單擊命令按鈕 Command1, 1 3 7 …… 將 Static Sub改為 Private Sub后,運行過程中多次單擊命令按鈕 Command1,執(zhí)行結果為: 1 1 1 …… 多窗體處理 在多窗體程序中,每個窗體可以有自己的界面和程序代碼,完成不同的操作 1. 添加窗體 通過“工程”菜單中的“添加窗體”命令來實現(xiàn) 2. 刪除窗體 選擇“工程”菜單中的“移除”命令 3. 保存窗體 選擇“文件”菜單中的“保存”或“另存為”命令 4. 設置啟動窗體 在“工程屬性”對話框中設置 多窗體與 Sub Main過程 Load語句: UnLoad語句 Show方法: Hide方法: 隱藏窗體。即不在屏幕上顯示,但仍在內(nèi)存 中,因