**Definition: **
An algorithm is a finite set of discrete statements (or Steps) in some particular sequence (or Order) to accomplish a predefined particular task.
**Properties: **
An algorithm must have the following properties:
Input(s) : An algorithm must have one(1) or more pre-specified input(s).
Output(s) : An algorithm must have one(1) or more output(s).
Definiteness : Each steps of an algorithm must define clearly (i.e. without any confusion or Contradiction or Ambiguity).
Finiteness : Each steps of an algorithm must be terminated in finite(tolerable) amount of time.
Effectiveness : Any calculations performed / Decision taken by a computer or any electronic machine with respect to an algorithm should be computable by the human beings with pencil and paper although time may be longer.
Correctness : An algorithm should always produce correct result with respect to it’s domain ( of the inputs ).
**Classification of Algorithms in terms of Flow of Control: **
Algorithm can be classified two category as follows:
Iterative Algorithm: In this category of algorithm mainly Loop are used to solve a difficult problem in simple manner.
Recursive Algorithm: In this category of algorithm the concept of Recursion are used to solve a difficult problem in simple manner.
What is Loop?
Loop is a concept where a set of statement(s) written in a block with in the algorithm will be computed a finite number of times, limited by some condition(s).
Example of an iterative algorithm**:**
Sample-algorithm(N, s)
1. i = 0, s = 0.
2. WHILE ( i <= N) [ Start of Loop ]
** s = s + i.**
** i = i + 1 **
**EndWhile** ** [ End of Loop ]**
3. Return
What is Recursion?
In recursion, in contrast with loop, has the following properties:
An algorithm should be capable to Call Itself.
There should be some Base Criteria, for which the algorithm should not call itself.
Each time the algorithm will call itself, result should converge toward the solution of the problem.
Example of an recursive algorithm**:**
Sample-algorithm(N, s)
1. i = 0, s = 0.
2. Call Rec-Add(N, s, i)
3. Return
Rec-Add(N, s, i)
1. IF (i > N ) Return. [ Base Criteria, No More Call ]
2. s = s + i.
3. Call Rec-Add(N, s, (i+1)) [ Calling itself ]
4. Return.
Here Rec-Add is defined recursively not **iteratively. **
Reference - here