Difference between Recursion and Iteration (original) (raw)
Last Updated : 23 Oct, 2025
A program is called recursive when an entity calls itself. A program is called iterative when there is a loop (or repetition).
- In recursion, a function calls itself to solve smaller parts of a given problem. It continues until a base condition is met to stop further calls.
- Iteration means repeatedly executing a set of instructions using loops like for, while, or do-while. It continues until a specified condition becomes false. C++ `
#include using namespace std;
// ----- Recursion ----- // method to find // factorial of given number int factorialUsingRecursion(int n){ if (n == 0) return 1;
// recursion call
return n * factorialUsingRecursion(n - 1);}
// ----- Iteration ----- // Method to find the // factorial of a given number int factorialUsingIteration(int n){ int res = 1, i;
// using iteration
for (i = 2; i <= n; i++)
res *= i;
return res;}
int main() { int num = 5; cout << "Factorial of " << num << " using Recursion is: " << factorialUsingRecursion(5) << endl;
cout << "Factorial of " << num <<
" using Iteration is: " <<
factorialUsingIteration(5);
return 0;}
C
#include <stdio.h>
// ----- Recursion ----- // method to find factorial of given number int factorialUsingRecursion(int n) { if (n == 0) return 1; return n * factorialUsingRecursion(n - 1); }
// ----- Iteration ----- // Method to find the factorial of a given number int factorialUsingIteration(int n) { int res = 1, i;
for (i = 2; i <= n; i++)
res *= i;
return res;}
int main() { int num = 5; printf("Factorial of %d using Recursion is: %d\n", num, factorialUsingRecursion(5));
printf("Factorial of %d using Iteration is: %d", num, factorialUsingIteration(5));
return 0;}
Java
class GFG {
// ----- Recursion -----
// method to find
// factorial of given number
static int factorialUsingRecursion(int n){
if (n == 0)
return 1;
// recursion call
return n * factorialUsingRecursion(n - 1);
}
// ----- Iteration -----
// Method to find the
// factorial of a given number
static int factorialUsingIteration(int n){
int res = 1, i;
// using iteration
for (i = 2; i <= n; i++)
res *= i;
return res;
}
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of " + num
+ " using Recursion is: "
+ factorialUsingRecursion(5));
System.out.println("Factorial of " + num
+ " using Iteration is: "
+ factorialUsingIteration(5));
}}
Python
----- Recursion -----
method to find
factorial of given number
def factorialUsingRecursion(n): if (n == 0): return 1;
# recursion call
return n * factorialUsingRecursion(n - 1);----- Iteration -----
Method to find the
factorial of a given number
def factorialUsingIteration(n): res = 1;
# using iteration
for i in range(2, n + 1):
res *= i;
return res;if name == "main": num = 5; print("Factorial of",num,"using Recursion is:", factorialUsingRecursion(5));
print("Factorial of",num,"using Iteration is:",
factorialUsingIteration(5));C#
using System;
class GFG {
// ----- Recursion -----
// method to find factorial of
// given number
static int factorialUsingRecursion(int n)
{
if (n == 0)
return 1;
// recursion call
return n * factorialUsingRecursion(n - 1);
}
// ----- Iteration -----
// Method to find the factorial of
// a given number
static int factorialUsingIteration(int n)
{
int res = 1, i;
// using iteration
for (i = 2; i <= n; i++)
res *= i;
return res;
}
public static void Main(String[] args)
{
int num = 5;
Console.WriteLine("Factorial of " + num +
" using Recursion is: " +
factorialUsingRecursion(5));
Console.WriteLine("Factorial of " + num +
" using Iteration is: " +
factorialUsingIteration(5));
}}
JavaScript
// ----- Recursion ----- // method to find // factorial of given number function factorialUsingRecursion(n) { if (n === 0) return 1;
// recursion call
return n * factorialUsingRecursion(n - 1);}
// ----- Iteration ----- // method to find the // factorial of a given number function factorialUsingIteration(n) { let res = 1;
// using iteration
for (let i = 2; i <= n; i++)
res *= i;
return res;}
// Driver code let num = 5; console.log("Factorial of " + num + " using Recursion is: " + factorialUsingRecursion(num));
console.log("Factorial of " + num + " using Iteration is: " + factorialUsingIteration(num));
PHP
`
Output
Factorial of 5 using Recursion is: 120 Factorial of 5 using Iteration is: 120
Difference between Iteration and Recursion
| Property | Recursion | Iteration |
|---|---|---|
| **Definition | Function calls itself. | A set of instructions repeatedly executed. |
| **Application | Certain problems can be solved quite easily using recursion like Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph, etc. | In general iterative solutions are preferred over recursive solutions as there is no extra overhead required for recursion. |
| **Termination | Through base case, where there will be no function call. | When the termination condition for the iterator ceases to be satisfied. |
| **Usage | Used in academics to teach foundations and logic. Also works as a foundation for Dynamic Programming and Divide and Conquer algorithms. | Preferred in general. |
| **Code Size | Can be smaller code size for inherently recursive problems. | Can be larger for naturally recursive problems. |
| Time Complexity | In general time complexity is higher or same. The time complexity especially become higher for the problems that can be optimized using dynamic programming | Lower or same. |
| **Space Complexity | Auxiliary space is either higher or same. Can be same in same cases where we need an explicit stack to simulate recursion like tree traversals, merge sort, etc. | Generally lower |
| **Overhead | Possesses overhead of repeated function calls. | No overhead as there are no function calls in iteration. |