The discrete dipole approximation, originally developed by Purcell and Pennypacker is a quite general method for solving scattering from irregularly shaped targets and/or a cluster of targets. Computationally, the method requires the solution of large dense systems of linear equations and various iterative methods have been employed in the literature for the purpose. In this work, the multi-level fast multipole algorithm is used to compute the matrix-vector product in the iterative methods. This algorithm has O(N) complexity and thus makes it feasible to solve hundreds of thousands of unknowns. Different formulas that has been proposed in the literature for determining the dipole polarizabilities in the discrete dipole approximation are compared. The method is checked by computing the scattering from spherical targets.