1
+ /*********************************************************************************
2
+ * (Fibonacci numbers) Rewrite the fib method in Listing 18.2 using iterations. *
3
+ * Hint: To compute fib(n) without recursion, you need to obtain fib(n - 2) and *
4
+ * fib(n - 1) first. Let f0 and f1 denote the two previous Fibonacci numbers. The *
5
+ * current Fibonacci number would then be f0 + f1. The algorithm can be *
6
+ * described as follows: *
7
+ * *
8
+ * f0 = 0; // For fib(0) *
9
+ * f1 = 1; // For fib(1) *
10
+ * *
11
+ * for (int i = 1; i <= n; i++) { *
12
+ * currentFib = f0 + f1; *
13
+ * f0 = f1; *
14
+ * f1 = currentFib; *
15
+ * } *
16
+ * // After the loop, currentFib is fib(n) *
17
+ * *
18
+ * Write a test program that prompts the user to enter an index and displays its *
19
+ * Fibonacci number. *
20
+ *********************************************************************************/
21
+ import java .util .Scanner ;
22
+
23
+ public class Exercise_18_02 {
24
+ /** Main method */
25
+ public static void main (String [] args ) {
26
+ // Create a Scanner
27
+ Scanner input = new Scanner (System .in );
28
+
29
+ // Prompt the user to enter an index
30
+ System .out .print ("Enter an index for a Fibonacci number: " );
31
+ int index = input .nextInt ();
32
+
33
+ // Find and display the Fibonacci number
34
+ System .out .println ("The Fibonacci number at index "
35
+ + index + " is " + fib (index ));
36
+
37
+ }
38
+
39
+ /** The method for finding the Fibonacci number */
40
+ public static long fib (long index ) {
41
+ long f0 = 0 ; // For fib(0)
42
+ long f1 = 1 ; // For fib(1)
43
+ long currentFib = 0 ;
44
+
45
+ if (index == 0 )
46
+ return f0 ;
47
+ else if (index == 1 )
48
+ return f1 ;
49
+ else {
50
+ for (int i = 1 ; i < index ; i ++) {
51
+ currentFib = f0 + f1 ;
52
+ f0 = f1 ;
53
+ f1 = currentFib ;
54
+ }
55
+ return currentFib ;
56
+ }
57
+ }
58
+ }
0 commit comments