(3) 递归
( ^# I& f4 x) {* a2 L: q% k: L Private Sub Command1_Click()
& f" a% l( @. y+ i5 y! ]9 Y# Z5 e Dim a As Integer$ c, W# ]9 @) l
a = 2% v" |2 l; K4 _% T$ [8 ?
Call sub1(a); g* w5 X! |7 u8 `: Y
End Sub! [6 U2 B8 {# J+ F5 ?3 E) B# k9 F2 Z
Private Sub sub1(x As Integer)( x; ]7 b7 a" _" S
x = x * 2 + 1
& Z( r" [$ q: U/ s If x < 10 Then2 j! f3 ^* i8 E. ~0 @# G5 V
Call sub1(x)2 O+ Y7 c0 `$ s& C {( r- j8 I9 R
End If
+ s' Y& {4 H$ ^ x = x * 2 + 1
7 n- M0 v7 k, w: ]2 r; d% {0 W Print x3 I" B3 d1 L' C% ` j
End Sub
, N6 y2 q6 e3 L8 k (4)递归% p& V8 S9 c- k9 S0 W
Private Sub test(x As Integer), R$ O! P; j0 ~; Q2 D( I
Dim i As Integer
) |; J# `. q9 n* O3 u If x 0 Then
9 X8 v7 U* E+ Y% V3 e" [6 a/ ^ Call test(x - 1); i$ u- y& ~. Z" H
For i = 1 To x
8 |& U3 ^9 {% H6 ^6 K# [( c. c Print x;
( U9 ^' J" h$ K Next i: R, c3 P! o4 I/ E; V) z
Print
, a/ M/ n) S5 \, Q5 d, S End If
8 U! r2 z& l4 Z6 e End Sub
# Y% K6 S& U3 u! I7 v) w; ] Private Sub Form_Click()
1 Z# `% x) K: {, ~' C test 3
( s+ C* f$ t( X( G6 u End Sub j+ q- I6 N6 b1 m, `& i! i
(5)同名变量
; d q! C( j( H. _8 {8 u3 c Dim y As Integer/ l! b, Y) L! S3 C
Private Sub Form_Click()
) o4 Z2 ]6 ^+ w: P4 }' a# S Dim x As Integer,y as integer+ o. ^' @, \% d. }& @! k
x=1 : y=1
& `% U+ O' `4 v Print "x1=";x, "y1=";y
* P- X }( t3 z5 p Test! j' J% J6 @0 y: g/ K
Print "x4=";x, "y4=";y
' M6 i: X J/ Z8 J! | End Sub, d! E. F5 Q }0 E& h$ O0 A( W, e
Private Sub Test()
0 o+ e+ b7 o! q' j Dim x As Integer
/ x n5 b/ N" W Print "x2=";x, "y2=";y
% ]4 D8 n+ f+ b" { x=2 : y=3. k2 h* r) Y& x& x7 V9 g
Print "x3=";x,"y3=";y# j# R6 }, T8 y& ^! |
End Sub9 P0 V! V9 L+ l$ h* X" s/ _
特例:
+ q9 c/ K' H" x3 ]6 Z 1、运行程序在窗体显示的结果是:- d" x* P% q) D3 p
Private Sub Form_Click()& ]' h$ R: C7 U) M
Dim a As Integer, b As Integer& V4 J: r$ f, v$ E, l8 Y
a = 3: b = 4: S" S& w9 ^+ u; Z! d
Call sub1(a, a)! E) ]& d& {& B. ]1 `; J" F
Print a, b! G' ] }% v) l ? ~0 n4 K
Call sub1(b, b)3 f" u4 S: F P
Print a, b
! V5 c7 I9 ^" J) g \" Y2 I5 A End Sub9 o8 N" {1 P' c9 {# o( b
Private Sub sub1(x As Integer, y As Integer)
. `5 i# k& @9 Y9 H8 f9 v2 V- j. i x = x + 2
; Z) ^3 W2 Z2 ^: X) M y = x + y
$ M6 z3 y2 u& H) Z End Sub9 F+ t' V/ o/ T L
2、运行程序单击窗体,在窗体上显示的内容是:16 20# ]& _5 e: `/ S$ o' t6 |, z+ S
Private Sub Form_Click()6 L; ?# D; }: d4 i$ j" x: Z
Dim n As Integer, m As Integer* Q( G2 p. `( l
n = 1: m = 2
" z- D! j3 p/ _# [ Print n + m + f(n, m) ;
% L I |2 o2 q- U '优先执行f函数,n,m变化后再运算 “+”
6 X; F4 Z' ]" N' a n = 2: m = 1
; p9 |% V V) Y' x5 J Print f(n, m) + f(m, n)
9 W: T3 t1 |" j( U- { 'n,m第一次变化后,第二次以变化后的值再调用; Y% }2 {: L# J
End Sub! ?) t, h, E9 W$ c5 S$ `' u+ ?0 B
Private Function f(n As Integer, m As Integer)
# R! e* }* o, ^3 p n = n + m/ D9 r: j, ^( }
m = m + 3* H5 L4 b* J3 d R) q
f = n + m; Y1 k. [" I* t/ Y6 s6 ^5 X4 @. W
End Function# | E2 h) c& \& m1 s
3、执行下面的程序,在窗体上显示的输出结果是______;如果将A语句改成:Call sub1(b+1,a),则在窗体上显示的输出结果是______。+ Q+ V+ t6 J& ~# H) f: @$ k
Private Sub Form_Click()
1 r1 E+ j$ B# O4 A, R) p2 V Dim a As Integer, b As Integer
+ \6 l5 K* H. O/ y a = 1: b = 2
3 X$ {# _1 M8 U5 v. ?* @$ p9 ~8 r Call sub1(a, b) 'A
+ e9 {4 a4 g6 C# |% p( T Print a, b8 @: R2 t M! J0 n! l- A
End Sub
3 A9 G2 `8 e" y Private Sub sub1(x As Integer, ByVal y As Integer)
' V; u) Z0 S4 l" \" A/ W! X* y# A x = x + y
& r# J, s3 n4 J- } y = x + y
( U( x* s, @' @2 T* O End Sub |