Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of...
-
Upload
hugo-harrell -
Category
Documents
-
view
245 -
download
0
Transcript of Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of...
![Page 1: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/1.jpg)
Recursive
![Page 2: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/2.jpg)
2
Recursive Definitions
•In a recursive definition, an object is defined in terms of itself.
•We can recursively define sequences, functions and sets.
![Page 3: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/3.jpg)
3
Recursively Defined Sequences•Example:
The sequence {an} of powers of 2 is given byan = 2n for n = 0, 1, 2, … .
•The same sequence can also be defined recursively:
a0 = 1
an+1 = 2an for n = 0, 1, 2, …
![Page 4: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/4.jpg)
4
Recursively Defined Functions
We can use the following method to define a function with the natural numbers as its domain:
1. Specify the value of the function at zero.
2. Give a rule for finding its value at any integer from its values at smaller integers.
![Page 5: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/5.jpg)
5
Constructing Recursion
o To construct a recursive algorithm you have to
find out:
1.Recursive step
2.Base step
![Page 6: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/6.jpg)
6
Recursively Defined Functions•Example:
f(0) = 3
f(n + 1) = 2f(n) + 3
•f(0) = 3•f(1) = 2f(0) + 3 = 23 + 3 = 9•f(2) = 2f(1) + 3 = 29 + 3 = 21•f(3) = 2f(2) + 3 = 221 + 3 = 45•f(4) = 2f(3) + 3 = 245 + 3 = 93
![Page 7: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/7.jpg)
Example : Give an inductive definition of the factorial
function F(n) = n!, Then compute F(5).
Solution:
(1) Specify the initial value of factorial function: F(0)=1.
(2) Rule for finding F(n + 1) from F(n):
F(n+1) = (n + 1) F(n)
F(5) = 5 • F(4)
=5 • 4 • F(3)
=5 • 4 • 3 • F(2)
=5 • 4 • 3 • 2 • F(1)
=5 • 4 • 3 • 2 • 1 • F(0)
= 5 • 4 • 3 • 2 • 1 • 1=120
![Page 8: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/8.jpg)
8
Recursively Defined Functions•A famous example: The Fibonacci numbers
f(0) = 0, f(1) = 1f(n) = f(n – 1) + f(n - 2)
•f(0) = 0•f(1) = 1•f(2) = f(1) + f(0) = 1 + 0 = 1•f(3) = f(2) + f(1) = 1 + 1 = 2•f(4) = f(3) + f(2) = 2 + 1 = 3•f(5) = f(4) + f(3) = 3 + 2 = 5•f(6) = f(5) + f(4) = 5 + 3 = 8
![Page 9: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/9.jpg)
9
Recursive Algorithms
Example II: Recursive Fibonacci Algorithm
procedure fibo(n: nonnegative integer)
if n = 0 then fibo(0) := 0
else if n = 1 then fibo(1) := 1
else fibo(n) := fibo(n – 1) + fibo(n – 2)
n 0 1 2 3 4 5 6 7 8 9 10 11
Fib(n) 0 1 1 2 3 5 8 13 21 34 55 89
![Page 10: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/10.jpg)
10
Recursive Algorithms
•Recursive Fibonacci Evaluation:
f(4)
f(3)
f(2)
f(1) f(0)
f(1)
f(2)
f(1) f(0)
![Page 11: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/11.jpg)
11
General Algorithm
if (stopping condition) then
solve simple problem (base)
else
use recursion to solve smaller problem
combine solutions from smaller problem
![Page 12: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/12.jpg)
12
Convert from decimal to binaryThis method converts an integer number to its binary equivalent.
Base step: dec2bin(n) = n if n is 0 or 1
Recursive step: dec2bin(n) = dec2bin (n/2) , (n mod 2)
Algorithm dec2bin(n):
If n < 2 Print nelse dec2bin(n / 2) Print n mod 2
![Page 13: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/13.jpg)
Example (Convert from decimal to binary)
n=12• dec2bin(12) = dec2bin (6) print (12 mod 2) 0• dec2bin(6) = dec2bin (3) , print (6mod 2) 0• dec2bin(3) = dec2bin (3/2) , print (3 mod 2) 1• dec2bin(3/2) = 1
1 1 0 0
13
![Page 14: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/14.jpg)
Example (Convert from decimal to binary)
n=17• dec2bin(17) = dec2bin (17/2) print (17 mod 2) 1• dec2bin(8) = dec2bin (8/2) , print (8 mod 2) 0• dec2bin(4) = dec2bin (4/2) , print (4 mod 2) 0• dec2bin(2) = dec2bin (2/2) , print (2 mod 2) 0• Dec2bin(1) = 1
1 0 0 0 1
14
![Page 15: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/15.jpg)
Example (Convert from decimal to binary)
n=90• Dec2bin(90) = dec2bin (90/2) print (90 mod 2) 0• dec2bin(45) = dec2bin (45/2) print (45 mod 2) 1• dec2bin(22) = dec2bin (22/2) print (22 mod 2) 0• dec2bin(11) = dec2bin (11/2) print (11 mod 2) 1• dec2bin(5) = dec2bin (5/2) print (5 mod 2) 1• dec2bin(2) = dec2bin (2/2) , print (2 mod 2) 0• Dec2bin(1) = 1
1 0 1 1 0 115
![Page 16: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/16.jpg)
16
class Method { public static void dec2bin( int n){
if ( n < 2 ) System.out.print( n );
else { dec2bin( n / 2 ); System.out.print( n % 2 ); } }}class Dec2Bin{
public static void main(String [] arg){ int i=10;
dec2bin(i);}
}
Output:1010
![Page 17: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/17.jpg)
17
Example : The Sum of the First N Positive Integers
• Definition:sum(n) = n + (n-1) + (n-2) + … + 1 for any integer n > 0
• Recursive relation;sum(n) = n + [(n-1) + (n-2) + … + 1]
= n + sum(n-1)Looks so nice, but how about n == 1?sum(1) = 1 + sum(0), but the argument to sum( ) must be positive
• Final recursive definition:sum(n) = 1 if n = 1 (Base case)
= n + sum(n-1) if n > 1 (Recursive call)
![Page 18: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/18.jpg)
18
Recursive Definition of sum(n)int sum(int n){ if (n == 1) return 1; else return n + sum(n-1);}
n = 3
sum(n-1)? =
return?
![Page 19: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/19.jpg)
19
Box trace of sum(3)
n = 3A: sum(n-1)?=
return?
n = 2A: sum(n-1)?=
return?
n = 1
return 1
n = 3A: sum(n-1)? =
return?
n = 2A: sum(n-1)?=return?
n = 1
return 1
Each box corresponds to a function’s activation record or stack.
cout << sum(3);
1
33
6
Basic Recursions
![Page 20: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/20.jpg)
Home Work
Give a recursive algorithm for computing the greatest common divisor of two nonnegative integers a and b with a < b.
![Page 21: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/21.jpg)
21
Computing GCD of A and B
• Basis for recursionGCD (a, 0) = a (base case)
GCD (a, b) = GCD (b, a mod b) (recursion)
• Recursive methodGcd(a , b)
{
if (b != 0)
return gcd(b, a % b); // recursion
return a; // base case
}
![Page 22: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/22.jpg)
Computing GCD of 33 and 55
GCD (a, 0) = a (base case)
GCD (a, b) = GCD (b, a mod b) (recursion)
• GCD (33,55) = GCD (55 , 33%55) = GCD (55 , 33)
• GCD (55,33) = GCD (33, 55%33) = GCD (33 , 22)
• GCD (22,33) = GCD (22, 33%22) = GCD (22 , 11)
• GCD (11,22) = GCD (11, 22%11) = GCD (11 , 0)
• GCD (11 , 0) = 11
• GCD(33,55) = 11
![Page 23: Recursive. 2 Recursive Definitions In a recursive definition, an object is defined in terms of itself. We can recursively define sequences, functions.](https://reader036.fdocuments.net/reader036/viewer/2022062322/56649ea45503460f94ba8d24/html5/thumbnails/23.jpg)
Trace of recursive method: gcd
gcd(33,55)
gcd(55,33)
gcd(33,22)
gcd(22,11)
gcd(11,0)
return 11
return 11
return 11
return 11
return 11
Callerint x = gcd(33,55);
call
call
call
call
call