java programming - chapter 11 (in thai)
DESCRIPTION
Java Programming - Chapter 11 (in Thai) by Wongyos KeardsriTRANSCRIPT
-
145
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
CHAPTER 11
(Recursion)
1. (Introduction to Recursion)
1. 1) (Recursion)
2) (Recursive Method) ( ) (Iteration) 4 while for 4
3) (Recursive Programming) -
2. 2 1) (Recursion Case)
return fac(n-1), return fibo(n-1) + fibo(n-2)
2) (Base Case) return 1, return n
3. f() 0 n f(n) = (0+1+2+ +n) (Iteration: for) (Recursion)
1 2 3 4 5 6 7
public static int f(int n) { int s = 0; for(int i = n; i >= 0; i--) { s += i; } return s; }
1 2 3 4 5 6 7
public static int f(int n) { if(n
-
146
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
1 [] f() f(5) (10 )
2 [] (6 ) 3 [] (6 )
1 2 3 4 5 6 7
public static int mul(int x, int y) { if (x >= 1) { return y + mul(x - 1, y); } else { return 0; } }
mul(4, 3) mul(5, 7) mul(20, 10) Linear Recursion
1 2 3 4 5 6 7 8
public static int gcd(int m, int n) { if (m < n) return gcd(n, m); if (m % n == 0) { return n; } else { return gcd(n, m % n); } }
gcd(28, 16) gcd(9, 14) gcd(75, 30)
Tail Recursion
1 2 3 4 5 6
1 2 3 4 5 6
-
147
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
4 [] expo() (15 ) (Binary Tree) expo(0), expo(1), expo(2) expo(3)
5 [] (6 )
1 2 3 4 5 6 7
public static int expo(int n) { if (n = 1) { printX(1, x); } } public static void printX(int i, int x) { if (i
-
148
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
6 [] akm(m, n) m n (10 )
n m
0 1 2 3 4 0 1 2 3
2. (Basic Recursion)
1. Linear Recursion, Tail Recursion Binary Recursion
2. (Series), (Functions) (Algorithms)
3. 0 n ( n 0) 1)
f(n) ==
n
0ii n = 0,1,2,3,
2) 2 ( 2 ) (1)
f(n) = 0 n = 0
(2)
f(n) ==
1n
0ii + n n = 1,2,3,
f(n) = f(n - 1) + n n = 1,2,3,
1
2
1 2 3 4 5 6 7 8 9
public static int akm(int m, int n) { if (m == 0) { return n + 1; } else if (n == 0) { return akm(m - 1, 1); } else { return akm(m - 1, akm(m, n - 1)); }
}
Nested Recursion
Recursion Iteration Wilhelm Ackermann
-
149
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
3) 2 2 if-else 1 2
7 [] f() n Math (10 )
8 [] f() n Math (10 )
1 2 3 4 5 6 7
public static int f(int n) { if(n > 0) { return f(n - 1) + n; } else { return 0; } }
n 0
1 2 3 4 5 6 7
public static int f(int n) { if(n
-
150
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
9 [] g() n Math (10 )
10 [] fac() (Factorial) n fac(5) 5! 120 (10 )
11 [] fibo() - (Fibonacci) fibo(n) = fibo(n - 1) + fibo(n - 2) n >= 2 fibo(0) = 0 fibo(1) = 1 (10 )
=
=
+
==
0 n 0
1 n 12 ni
11)n(g
n
2i
-
151
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
12 [] fibo() - (Binary Tree) fibo(5) (5 )
13 [] pow() ab a b ( ) (10 )
14 [] f() n Math (10 )
113n1
2n11n1
n1)n(f
O++
++
+=
fibo(5)
fibo(4) fibo(3)
fibo(3) fibo(2) fibo(2) fibo(1)
fibo(1) fibo(2)
fibo(0)fibo(1)
Math
fibo(0)fibo(1)
fibo(0) fibo(1)
-
152
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
15 [] (20 ) 1) g(n, m) = 1m - 2m + 3m - + (nm) n = 1,2,3, (10 ) 2) h(n) = n
1...41
31
211 +++ n = 1,2,3, (10 )
3. (Advanced Recursion)
1. 2 ( Overload ) Mutual Recursion
Math
Math
-
153
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
2. (String) (Arrays)
3. Overload Overload
16 [] search() -1 (10 )
1 2 3 4 5 6 7 8 9 10 11 12
public static int max(int a[]) { return max(a, 0, a[0]); } public static int max(int a[], int i, int m) { if (i < a.length) { if (a[i] > m) m = a[i]; return max(a, i + 1, m); } else { return m; } }
max() Overload
max() max() max() - (Indirect Recursion)
-
154
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
17 [] overHundred() 100 d (10 ) public class OverHundredNumber { public static void main(String[] args) { int d[] = { 99, 101, 13, 78, 200, 534, 47, 1234, 736 }; System.out.println(overHundred(d));
}
} //End of class 18 [] revStr() "Computer" "retupmoC" (10 )
-
155
2553 ( 7 2/2553) ()
Computer Programming using Java Recursion - 11
19 [] formulaAtoB() a b formulaAtoB(6, 15) 6 15 (10 ) 20 [] addArray() 2 (10 )
-
156
2553 ( 7 2/2553) ()
Computer Programming using Java 11 - Recursion
21 [] isMatrixEquals() 2 (10 )