Difference between Recursion and Iteration - GeeksforGeeks

31 Jan, 2022
A program is called recursive when an entity calls itself. A program is call iterative when there is a loop (or repetition).Example: Program to find the factorial of a number  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find factorial of given number#include<bits/stdc++.h>using namespace std; // ----- Recursion -----// method to find factorial of given numberint factorialUsingRecursion(int n){    if (n == 0)        return 1;     // recursion call    return n * factorialUsingRecursion(n - 1);} // ----- Iteration -----// Method to find the factorial of a given numberint factorialUsingIteration(int n){    int res = 1, i;     // using iteration    for (i = 2; i <= n; i++)        res *= i;     return res;} // Driver methodint 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;} // This code is contributed by mits
// Java program to find factorial of given numberclass 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;    }     // Driver method    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));    }}
# Python3 program to find factorial of given number # ----- Recursion -----# method to find factorial of given numberdef factorialUsingRecursion(n):    if (n == 0):        return 1;     # recursion call    return n * factorialUsingRecursion(n - 1); # ----- Iteration -----# Method to find the factorial of a given numberdef factorialUsingIteration(n):    res = 1;     # using iteration    for i in range(2, n + 1):        res *= i;     return res; # Driver methodnum = 5;print("Factorial of",num,"using Recursion is:",                    factorialUsingRecursion(5)); print("Factorial of",num,"using Iteration is:",                    factorialUsingIteration(5));     # This code is contributed by mits
// C# program to find factorial of// given numberusing 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;    }     // Driver Code    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));    }} // This code has been contributed by Rajput-Ji
<?php// PHP program to find factorial of given number     // ----- 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");     // This code is contributed by mits?>
<script> // JavaScript program to find factorial of given number// ----- Recursion -----// method to find factorial of given numberfunction 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)    {        var res = 1, i;         // using iteration        for (i = 2; i <= n; i++)            res *= i;         return res;    }     // Driver method        var num = 5;        document.write("Factorial of " + num                           + " using Recursion is: "                           + factorialUsingRecursion(5)+"<br>");         document.write("Factorial of " + num                           + " using Iteration is: "                           + factorialUsingIteration(5));     // This code is contributed by shivanisinghss2110</script>
Factorial of 5 using Recursion is: 120
Factorial of 5 using Iteration is: 120
 
Below are the detailed example to illustrate the difference between the two: 
Time Complexity: Finding the Time complexity of Recursion is more difficult than that of Iteration. Recursion: Time complexity of recursion can be found by finding the value of the nth recursive call in terms of the previous calls. Thus, finding the destination case in terms of the base case, and solving in terms of the base case gives us an idea of the time complexity of recursive equations. Please see Solving Recurrences for more details.  Iteration: Time complexity of iteration can be found by finding the number of cycles being repeated inside the loop.  Usage: Usage of either of these techniques is a trade-off between time complexity and size of code. If time complexity is the point of focus, and number of recursive calls would be large, it is better to use iteration. However, if time complexity is not an issue and shortness of code is, recursion would be the way to go.Recursion: Recursion involves calling the same function again, and hence, has a very small length of code. However, as we saw in the analysis, the time complexity of recursion can get to be exponential when there are a considerable number of recursive calls. Hence, usage of recursion is advantageous in shorter code, but higher time complexity.  Iteration: Iteration is repetition of a block of code. This involves a larger size of code, but the time complexity is generally lesser than it is for recursion.  Overhead: Recursion has a large amount of Overhead as compared to Iteration. Recursion: Recursion has the overhead of repeated function calls, that is due to repetitive calling of the same function, the time complexity of the code increases manyfold.  Iteration: Iteration does not involve any such overhead.  Infinite Repetition: Infinite Repetition in recursion can lead to CPU crash but in iteration, it will stop when memory is exhausted. Recursion: In Recursion, Infinite recursive calls may occur due to some mistake in specifying the base condition, which on never becoming false, keeps calling the function, which may lead to system CPU crash.  Iteration: Infinite iteration due to mistake in iterator assignment or increment, or in the terminating condition, will lead to infinite loops, which may or may not lead to system errors, but will surely stop program execution any further.  
Time Complexity: Finding the Time complexity of Recursion is more difficult than that of Iteration. Recursion: Time complexity of recursion can be found by finding the value of the nth recursive call in terms of the previous calls. Thus, finding the destination case in terms of the base case, and solving in terms of the base case gives us an idea of the time complexity of recursive equations. Please see Solving Recurrences for more details.  Iteration: Time complexity of iteration can be found by finding the number of cycles being repeated inside the loop.  
Recursion: Time complexity of recursion can be found by finding the value of the nth recursive call in terms of the previous calls. Thus, finding the destination case in terms of the base case, and solving in terms of the base case gives us an idea of the time complexity of recursive equations. Please see Solving Recurrences for more details.  
Iteration: Time complexity of iteration can be found by finding the number of cycles being repeated inside the loop.  
Usage: Usage of either of these techniques is a trade-off between time complexity and size of code. If time complexity is the point of focus, and number of recursive calls would be large, it is better to use iteration. However, if time complexity is not an issue and shortness of code is, recursion would be the way to go.Recursion: Recursion involves calling the same function again, and hence, has a very small length of code. However, as we saw in the analysis, the time complexity of recursion can get to be exponential when there are a considerable number of recursive calls. Hence, usage of recursion is advantageous in shorter code, but higher time complexity.  Iteration: Iteration is repetition of a block of code. This involves a larger size of code, but the time complexity is generally lesser than it is for recursion.  
Recursion: Recursion involves calling the same function again, and hence, has a very small length of code. However, as we saw in the analysis, the time complexity of recursion can get to be exponential when there are a considerable number of recursive calls. Hence, usage of recursion is advantageous in shorter code, but higher time complexity.  
Iteration: Iteration is repetition of a block of code. This involves a larger size of code, but the time complexity is generally lesser than it is for recursion.  
Overhead: Recursion has a large amount of Overhead as compared to Iteration. Recursion: Recursion has the overhead of repeated function calls, that is due to repetitive calling of the same function, the time complexity of the code increases manyfold.  Iteration: Iteration does not involve any such overhead.  
Recursion: Recursion has the overhead of repeated function calls, that is due to repetitive calling of the same function, the time complexity of the code increases manyfold.  
Iteration: Iteration does not involve any such overhead.  
Infinite Repetition: Infinite Repetition in recursion can lead to CPU crash but in iteration, it will stop when memory is exhausted. Recursion: In Recursion, Infinite recursive calls may occur due to some mistake in specifying the base condition, which on never becoming false, keeps calling the function, which may lead to system CPU crash.  Iteration: Infinite iteration due to mistake in iterator assignment or increment, or in the terminating condition, will lead to infinite loops, which may or may not lead to system errors, but will surely stop program execution any further.  
Recursion: In Recursion, Infinite recursive calls may occur due to some mistake in specifying the base condition, which on never becoming false, keeps calling the function, which may lead to system CPU crash.  
Iteration: Infinite iteration due to mistake in iterator assignment or increment, or in the terminating condition, will lead to infinite loops, which may or may not lead to system errors, but will surely stop program execution any further.  
   
  
Rajput-Ji
Mithun Kumar
shivanisinghss2110
vijaykumarsah293
Algorithms-Recursion
Picked
Technical Scripter 2018
Algorithms
Analysis
Technical Scripter
Algorithms
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
SDE SHEET - A Complete Guide for SDE Preparation
DSA Sheet by Love Babbar
Introduction to Algorithms
Playfair Cipher with Examples
How to write a Pseudo Code?
Analysis of Algorithms | Set 1 (Asymptotic Analysis)
Practice Questions on Time Complexity Analysis
Understanding Time Complexity with Simple Examples
Time Complexity and Space Complexity
Analysis of Algorithms | Set 2 (Worst, Average and Best Cases)