3.
Money example
If you want to collect $1,000 from your BU
classmates, and each of the student can only
afford to give you $10, how would you do?
4.
Method 1
The first method is a traditional thinking mode.
You can approach every student you meet and
ask him/her to donate $10.
5.
Iterative approach
We call this – iterative approach. It is similar to a
loop in computer programming. You continue to
ask students for $10 until you reach the target of
$1,000.
6.
Iterative approach
while (money collected < $1,000) {
meet next student;
ask for $10 donation;
if (ok)
add to the money collected;
}
7.
Other approach
The iterative approach is straight forward and
effective. We can ask if there are any better
approaches to this problem.
8.
Recursive approach
It is not very efficient if I need to ask 100 students
to collect the $1,000.
Consider the case: I just ask 10 students to
collect money for me. Each of them has to collect
$100 by whatever means.
9.
Recursive approach
Then the 10 students will concurrently go out to
ask 10 or more students to collect $10 each from
them.
11.
Divide and conquer
Divide and conquer
1. Decompose the original problem into simpler
instances of the same problem.
2. The simpler problems must become so simple that
they can be solved without further division.
3. Combine the smaller solutions to produce a solution
to the original problem.
14.
Problem statement
We want to divide a rectangle into a square and
a smaller rectangle. Continue to divide the
smaller rectangle until it is too small to be visible
on screen.
21.
The process
Note that, the second division will be the same
as the first one, except the rectangle rotates by
90 degrees counter-clockwise.
22.
Fibonacci numbers
We go back to the study of the Fibonacci
numbers. Remember,
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
If we denote, f(1) = 1, f(2) = 1, f(3) = 2, f(4) =
3, f(5) = 5, …, how can we write down a general
formula for f(n)?
23.
Fibonacci numbers
It is not easy for us to write down a formula like,
f(n) = (n + ?) / ???
It is much more easy for us to
write, however, with this format.
What is the relation among: f(n), f(n-1), f(n-2)?
24.
Recursive definition
It is obviously we can write down,
f(n) = f(n-1) + f(n-2)
25.
Initial conditions
In order to find out any f(n) by the following
formula,
f(n) = f(n-1) + f(n-2)
We must have two initial conditions. That is
f(1) = 1
f(2) = 1
38.
Recursive definition
shape rectangle {
drawRectangle [a -0.8]
rectangle [?]
}
Note that we enter into a difficult situation. The
rule rectangle refers back to itself. It seems to go
into an infinite loop again and again when we
have to execute the rectangle definition.
39.
Recursive definition
shape rectangle {
drawRectangle [a -0.8]
rectangle [?]
}
In order to let the Context Free Art stop, we have
to make sure that each time the rectangle is
drawn, it has to be smaller and smaller until it is
invisible on screen. Alternately, we have to add
another definition for rectangle to stop referring
itself.
40.
Recursive definition
shape rectangle {
drawRectangle [a -0.8]
rectangle [s 0.61803399 r -90 x 0.5]
}
Let’s try out this.
41.
Recursive definition
startshape Golden
shape Golden {
rectangle []
}
shape rectangle {
drawRectangle [a -0.8]
rectangle [s 0.61803399 r -90 x 0.5]
}
shape drawRectangle {
SQUARE [s 1.61803399 1]
}
Be the first to comment