Iteration vs Recursion
In programming, iteration, and recursion are methods to solve problems. Now, I cover these two methods, gave a simple explanation then solve some common problems in a programming interview as examples.
Iteration
Iteration is a repetition of a process based on loop. Technically, using for
or while
.
Recursion
Recursion is a method that calls itself for a repetition.
Examples
I wrote all examples in C. All problems are solved both in the iterative and recursive method.
Factorial
Factorial (symbol: !) is multiplying all whole numbers from the chosen number down to 1.
unsigned int factorial_iterative(unsigned int n) {
int result = 1;
for (int i = n; i > 0; i--) result *= i;
return result;
}
unsigned int factorial_recursive(unsigned int n) {
if (n == 0) return 1;
return n * factorial_recursive(n - 1);
}
Fibonacci
Fibonacci (symbol: Fn) is an integer sequence that each number is the sum of the two proceeding ones.
int fibonacci_iterative(int n) {
if (n <= 1) return n;
int result = 1;
int less_one = 0;
int less_two;
for (int i = 2; i <= n; i++) {
less_two = result;
result += less_one;
less_one = less_two;
}
return result;
}
int fibonacci_recursive(int n) {
if (n <= 1) return n;
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}
Reverse String
Reverse String is a common question in a programming interview. Example, "abc123" to be "321cba".
void reverse_string_iterative(char *string, int start, int end) {
int tmp;
while (start < end) {
tmp = string[start];
string[start] = string[end];
string[end] = tmp;
start++;
end--;
}
}
void reverse_string_recursive(char *string, int start, int end) {
if (start >= end) return;
int tmp;
tmp = string[start];
string[start] = string[end];
string[end] = tmp;
reverse_string_recursive(string, start + 1, end - 1);
}
Conclusion
Exactly, there are still some examples that I want to bring them here. I only want to make it faster. So, three examples are enough to make an understanding of iteration and recursion.
I still remember when I was with my friends, we tested the performance of the method of iteration and recursion. The recursion is slow, even if it makes the code smaller.
Focus on performance when making a solution. That is why I prefer an iteration method.