Last Updated : 11 Jul, 2025
A program is called recursive when an entity calls itself. A program is called iterative when there is a loop (or repetition).
Example: Program to find the factorial of a number
C++
#include<iostream>
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;
// 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;
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
<?php
// ----- 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)
{
$res = 1;
// using iteration
for ($i = 2; $i <= $n; $i++)
$res *= $i;
return $res;
}
// Driver method
$num = 5;
print("Factorial of ".$num." using Recursion is: ".
factorialUsingRecursion(5)."\n");
print("Factorial of ".$num." using Iteration is: ".
factorialUsingIteration(5)."\n");
?>
Factorial of 5 using Recursion is: 120 Factorial of 5 using Iteration is: 120Difference between Iteration and Recursion
The following table lists the major differences 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 In general, the auxiliary space is either higher. 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.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4