Fibonacci Numbers
Fibonacci numbers are elements of the numerical sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, … where the first two numbers are either 0 and 1, or 1 and 1, and each subsequent number is the sum of the previous two:
F0 = 0,
F1 = 1,
Fn = Fn-1 + Fn-2
The following Java example shows two ways to compute Fibonacci numbers: using recursion and using a for loop:
import java.time.Duration;
import java.time.LocalTime;
public class FibonacciExample {
public static void main(String[] args) {
int n = 25;
LocalTime localTime1 = LocalTime.now();
System.out.print("Recursion: " + recursive(n));
LocalTime localTime2 = LocalTime.now();
Duration duration1 = Duration.between(localTime1, localTime2);
System.out.println(", execution time: " + duration1);
LocalTime localTime3 = LocalTime.now();
System.out.print("For loop: " + calculateWithFor(n));
LocalTime localTime4 = LocalTime.now();
Duration duration2 = Duration.between(localTime3, localTime4);
System.out.println(", execution time: " + duration2);
}
/**
* Time complexity: O(n)
*/
private static long calculateWithFor(int n) {
long first = 0;
long second = 1;
long result = n;
for (int i = 1; i < n; i++) {
result = first + second;
first = second;
second = result;
}
return result;
}
/**
* Time complexity: O(2^n)
*/
private static long recursive(int n) {
if (n <= 1) {
return n;
}
return recursive(n - 2) + recursive(n - 1);
}
}
When you run the program and compare the execution time of both algorithms, you'll see that the recursive version is significantly slower. For example, setting n = 250
will cause the program to freeze due to the exponential complexity of the recursive approach.
Conclusion: Recursion is elegant but inefficient for large n
. The iterative approach using a loop is much faster and more memory-efficient. For high-performance applications, consider using memoization or dynamic programming techniques.
This example helps Java learners understand the difference in performance and complexity between recursion and iteration when calculating Fibonacci numbers.

Please log in or register to have a possibility to add comment.