As stated in Wikipedia. Functional programming is more so a programming paradigm than a programming style. Functional programming should be used in situations that call for it.
Generally speaking, functional programming is useful for applications that require specific functions that have predictable input and output.
The main advantages are as follows
I will leave you to read the wiki article on this as it does a much better job of describing functional programming than I will.
Cheers.