Title: Fibonacci Numbers
1Fibonacci Numbers
- A simple example of program design
2Purpose of this presentation
- The whole point of this presentation is to give
you some idea of how to put together the
components we have so far (declarations,
assignments, if and while statements) into a
working program - The example we use is writing a program to
compute and display a Fibonacci sequence
3Fibonacci sequences
- A Fibonacci sequence is an infinite list of
integers - The first two numbers are given
- Usually (but not necessarily) these are 1 and 1
- Each subsequent number is the sum of the two
preceding numbers - 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
- Lets write a program to compute these
4Starting the Fibonacci sequence
- We need to supply the first two integers
- int first 1int second 1
- We need to print these out
- System.out.print(first " ")System.out.print(se
cond " ") - We need to compute and print the next number
- int next first secondSystem.out.print(next
" ")
5Taking the next step
- We need to compute and print the next number
- int next first secondSystem.out.print(next
" ") - Now what?
- We don't want to make up a lot more names
- If we use a loop, we must reuse names
6Preparing for another step
- This computation gave us our third number
- int next first secondSystem.out.print(next
" ") - The sequence so far is first second next
- To get another number, we need second next
- Variable first is no longer useful for anything
- Lets move values around so that first second
does the job we need
7Preparing to make many steps
- We need to make these moves
- We can do it like this
- first secondsecond next
- We can put these statements in a loop and do them
as many times as we please
8The program so far
int first 1int second 1System.out.print(fi
rst " ")System.out.print(second " ")while
( ? ? ? ) // when do we stop? int next
first second System.out.print(next "
") first second second next
9Deciding when to stop
- Suppose we stop when we get to a number thats
1000 or bigger - So we continue as long as the number is less than
1000 - while (next
- Question is the final number printed greater
than 1000 or less than 1000?
10One other minor detail
- We have been printing the numbers all on one line
- Well get to 1000 quickly enough, so we wont
have a terribly long line - For neatness sake, we really ought to end the
line (rather than hoping Java does it for us) - System.out.println( )
11The program so far
int first 1int second 1System.out.print(fi
rst " ")System.out.print(second " ")while
(next second System.out.print(next " ")
first second second nextSystem.out.pr
intln( )
// oops--a bug
12Fixing the bug
- The first time we see the variable next, its in
the test of the while loop - while (next
- next hasnt been given a value yet
- next hasnt even been declared!
- Solution declare next up with the other
variables, and give it some reasonable initial
value
13The (fixed) program so far
int first 1int second 1int next
2System.out.print(first " ")System.out.print
(second " ")while (next oops--a bug next first second
System.out.print(next " ") first
second second nextSystem.out.println(
)
14Finishing up
- We have the commands we need, but we do not have
a complete application - We need to put the commands into a method
- We need to put the method into a class
- The next slide shows the extra stuff we need, but
doesnt explain it
15The box our program goes in
public class Fibonacci public static void
main(String args ) (code goes here)
16The End