## 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.
3. Return

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