4️⃣

# 13.4 Recursive and Iterative Algorithms

## Recursion vs. Iteration

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;
}``````

⚖️