__Recursion vs. Iteration__

**Source Code: **examples/Fibonacci.java (see below)

Iterative algorithms generally perform faster and take less memory than their recursive counterparts. So what’s the advantage of recursion? Believe it or not, there are a lot of problems where a recursive solution is easier to write than an iterative one.Problems involving breaking a complex problem into pieces and then aggregating the results are perfect candidates for recursive solutions. For example, performing operations on a tree is much more intuitive than recursion. Additionally, recursive solutions can sometimes take less lines of code than their iterative counterparts.

**Fibonacci Sequence Recursive**

```
public static int fibonacciRecursion(int nthNumber) {
// use recursion
if (nthNumber == 0) {
return 0;
} else if (nthNumber == 1) {
return 1;
}
return fibonacciRecursion(nthNumber - 1) + fibbonaciRecusion(nthNumber - 2);
}
```

**Fibonacci Sequence Iterative**

```
public static int fibonacciLoop(int nthNumber) {
//use loop
int previouspreviousNumber, previousNumber = 0, currentNumber = 1;
for (int = 1; i < nthNumber; i++) {
previouspreviousNumber = previousNumber;
previousNumber = currentNumber;
currentNumber = previouspreviousNumber + previousNumber;
}
returns currentNumber;
}
```

__Previous Section__

__Next Section__

**Copyright © 2021 Code 4 Tomorrow. All rights reserved.**
The code in this course is licensed under the MIT License.
*If you would like to use content from any of our courses, you must obtain our explicit written permission and provide credit. Please contact **classes@code4tomorrow.org** for inquiries.*