Recursion and Iteration are both used for executing a set of statements repeatedly, until the condition becomes false.
Recursion is applied to functions, where the function calls itself to repeat the lines of code/ certain statements.
Iteration on the other hand, uses looping in order to execute a set of statements multiple times. A given problem can be solved both by recursion as well as iteration, however they have certain important differences as well.
 

ParameterRecursionIteration
DefinitionRecursion involves a recursive function which calls itself repeatedly until a base condition is not reached.Iteration involves the usage of loops through which a set of statements are executed repeatedly until the condition is not false.
Termination conditionHere termination condition is a base case defined within the recursive function.Termination condition is the condition specified in the definition of the loop.
Infinite CaseIf base case is never reached it leads to infinite recursion leading to memory crash.If condition is never false, it leads to infinite iteration with computers CPU cycle being used repeatedly.
Memory UsageRecursion uses stack area to store the current state of the function,due to which memory usage is high.Iteration uses the permanent storage area only for the variables involved in its code block, hence memory usage is less.
Code SizeCode size is comparitively smaller.Code size is comparitively larger.
PerformanceSince stack are is used to store and restore the state of recursive function after every function call , performance is comparitively slow.Since iteration does not have to keep re-initializing its component variables and neither has to store function states, the performance is fast.
Memory RunoutThere is a possibility of running out of memory, since for each function call stack area gets used.There is no possibility of running out of memory as stack area is not used.
OverheadRecursive functions involve extensive overhead, as for each function call the current state, parameters etc have to be pushed and popped out from stack.There is no overhead in Iteration.
ApplicationsFactorial , Fibonacci Series etc.Finding average of a data series,  creating multiplication table etc.
Example#include <stdio.h>
int fact(int n){
if(n == 0)
return 1;
else
return n * factorial(n-1);
}
int main() {
printf(“Factorial for 5 is %d”, fact(5));
return 0;
}
Output:  Factorial for 5 is 120
#include <stdio.h>
int main() {
int i, n = 5, fact = 1;
for(i = 1; i <= n; ++i)
fact = fact * i;
 
printf(“Factorial for 5 is %d”, fact);
 
return 0;
}
 
Output:  Factorial for 5 is 120

Report Error/ Suggestion

Related Posts:

[yuzo_views]











CopyRight © 2019

CopyRight © 2019